8

我正在使用 django-storages 从 s3 提供静态内容。这在使用 boto 2.5.X 时效果很好。但是当我使用 boto >= 2.6 时,s3 媒体的 url 会被破坏;附加了一个额外的变量。不同之处在于 x-amz-security-token 被附加(我不想要)。无法通过 url 访问媒体。

在我的 settings.py 中,我使用

AWS_QUERYSTRING_AUTH = False

错误的网址:

https://mybucket.s3.amazonaws.com/static/style/css/layout.min.css?x-amz-security-token=AQoDYXdzEKj/76aRNkwEaoALUm866M8Z6Kc4aF/76aRNkjDcT70xSVB58kR%2BONYLf7y1z1pgqUX7fPRXVQjP9DYOZzcVdHCV27zybD/iPYT2C6rCEnvkQvhcq....

有什么建议么?

4

2 回答 2

3

我有一个基于 django-storages (版本 1.1.8)的更好的解决方法,它是

 AWS_S3_CUSTOM_DOMAIN = 'mybucket.s3.amazonaws.com'

这避免了 django-storage 调用 botogenerate_url并且只是将资源的路径缝合在一起。如果你想使用 auth 来获取静态文件,这是行不通的。

对于好奇:

我网站某些部分的静态文件有效,而其他部分(如管理员)则无效。这与两者之间的差异有关

{% load static %}

{% load staticfiles %}

两者都定义了一个块标签{% static %},但它们做不同的事情。来自 static 的一个只是在 {{ STATIC_URL }} 之前,来自 staticfiles 的一个使用存储的url方法来获取文件的 url。django 管理员的{% static %}阻止admin_static就像staticfiles使用存储一样。

通过更改为使用{% load staticfiles %}我的网站,在AWS_QUERYSTRING_AUTH = False和/或AWS_S3_SECURE_URLS = False. 这表明问题基本上在 botogenerate_url中,即当querystring_auth是时Falsex-amz-security-token仍然设置。

于 2015-02-26T18:17:40.893 回答
1

尝试将其添加到您的 settings.py

AWS_S3_SECURE_URLS = 假

于 2014-11-17T16:30:54.057 回答