我正在使用django-storage从s3提供静态内容。这在使用boto 2.5.X时工作正常。但是当我使用boto> = 2.6时,s3媒体的网址会被破坏;附加一个额外的变量。不同之处在于附加了x-amz-security-token(我不想要)。网址无法访问媒体。
在我的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....
有什么建议吗?
答案 0 :(得分:2)
基于django-storages(版本1.1.8)
我有更好的解决方法 AWS_S3_CUSTOM_DOMAIN = 'mybucket.s3.amazonaws.com'
这避免了django-storage调用boto的generate_url
,并且只是将资源的路径拼接在一起。如果你想使用auth来获取静态文件,这将无效。
对于好奇:
我网站的某些部分的静态文件工作,其他部分,如管理员,不起作用。这与
之间的区别有关{% load static %}
和
{% load staticfiles %}
两者都定义了一个块标记{% static %}
,但它们做了不同的事情。来自static的那个只是{{STATIC_URL}},来自staticfiles的那个使用存储的url
方法来获取文件的url。来自{% static %}
的django管理员admin_static
块与staticfiles
块一样,使用存储。
通过更改为使用{% load staticfiles %}
我的网站在AWS_QUERYSTRING_AUTH = False
和/或AWS_S3_SECURE_URLS = False
处随处可见。这指出问题基本上是boto generate_url
,当querystring_auth
为False
时,x-amz-security-token
仍然设置。
答案 1 :(得分:0)
尝试在settings.py中添加此内容
AWS_S3_SECURE_URLS = False