【发布时间】:2020-01-01 23:31:55
【问题描述】:
在 Django 1.9 项目中我需要重定向:
到
https://examplebucket.s3.amazonaws.com/app/index.html
但我需要 https://examplce.com/app/ 仍然可以在浏览器地址栏上看到...
我知道这在理论上使用 Django 一定是可能的,因为之前从事此项目的团队进行了设置以从 S3 存储桶中提供 /static/ 媒体文件。如果我通过https://example.com/static/app/index.html 访问这些静态文件,它们是从 S3 存储桶提供的,但浏览器地址栏仍然显示我输入的原始 url。
我正在部署一个 Ionic Browser 项目,我希望从 S3 提供文件(包括索引),但 url 需要对用户友好,这就是原因。
【问题讨论】:
-
这是不可能的,浏览器总是显示所服务文件的位置。同样对于静态文件,您不想重定向,只需指向 HTML 源中的 AWS 位置 (
<img src="https://blabla.s3.amazonaws.com/...">)。您可以做的是设置 CDN(例如 CloudFront)以使用属于您的子域(例如 static.example.com)。然后你指向那个 (<img src="https://static.example.com/...">)。 -
请注意,您的问题并不清楚什么是静态文件。
index.html本身是静态文件还是从您的 django 服务器提供的 包含 静态文件的网页?如果有,请查看index.html的来源,index.html中包含的图片的url是什么? -
@dirkgroten index.html 是一个引用静态文件(主要是 js)的 html 文件,但我需要 index.html 文件和 js 文件位于同一个域中,因为其他所有类型CORS 问题出现
-
正如我所说,如果您将静态文件托管在 AWS(或任何不是您的服务器的服务器)上,这是不可能的。但是 CORS 应该不是问题,您可以在您的 S3 存储桶中 enable CORS,以便您的网站可以访问您的 s3 资源。对于您的 CloudFront 分配也是如此,此外,您可以配置自己的子域,这样对于查看源或在单独的选项卡中打开您的图像之一的用户来说,它“看起来”更好。但是您仍然需要配置 AWS 以发送正确的 CORS 标头。