【问题标题】:Using django-storages and the s3boto backend: x-amz-security-token is appended which I do not want使用 django-storages 和 s3boto 后端:附加了我不想要的 x-amz-security-token
【发布时间】:2013-01-27 23:28:08
【问题描述】:

我正在使用 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....

有什么建议吗?

【问题讨论】:

  • 你找到答案了吗?
  • 不...仍在使用旧版本的 boto
  • 老问题,但是当我使用 EC2 IAM 角色时,我在当前的 boto (2.42) 和 django-storages (1.5) 看到了这种行为。似乎是long-standing boto bugthis workaround 为我工作。

标签: django amazon-s3 boto


【解决方案1】:

我有一个基于 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。来自admin_static 的django 管理员{% static %} 块的作用类似于staticfiles 一个,使用存储。

通过更改为使用{% load staticfiles %},当AWS_QUERYSTRING_AUTH = False 和/或AWS_S3_SECURE_URLS = False 时,我的网站同样在所有地方都被破坏了。这表明问题基本上在 boto generate_url 中,当 querystring_authFalse 时,x-amz-security-token 仍然设置。

【讨论】:

    【解决方案2】:

    尝试在你的 settings.py 中添加这个

    AWS_S3_SECURE_URLS = 假

    【讨论】:

    • 我相信 AWS_S3_SECURE_URLS 设置控制 https 与 http url,并且与添加查询字符串身份验证无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2013-06-05
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 2019-07-05
    • 2016-01-14
    相关资源
    最近更新 更多