【问题标题】:Django storage s3 media url is https:// instead of http://Django storage s3 media url 是 https:// 而不是 http://
【发布时间】:2013-02-28 14:30:17
【问题描述】:

当使用 django-storage s3 提供媒体时,正在生成的媒体 url 是这样的:

https://mybucket.s3.amazonaws.com/myimage.jpg?Signature=5ifoyLqzmtfVNS1ovfzVvN92RH0%3D&Expires=1363124819&AWSAccessKeyId=AKIAJ7ZTU7K4SPYKGOFA

由于https导致图片不显示:

    You attempted to reach mybucket.s3.amazonaws.com,
 but instead you actually reached a server identifying itself as *.s3.amazonaws.com.
 This may be caused by a misconfiguration on the server or by something more serious. An attacker on your network could be trying to get you to visit a fake (and potentially harmful) version of mybucket.s3.amazonaws.com.

我需要将图像作为 HTTP 而不是 HTTPS

我的设置是:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = "AKIAJ....K4SPYKGOFA"
AWS_SECRET_ACCESS_KEY = "2Y7G98JoCRzAEp....rPoCjWZuwDaQ"
AWS_STORAGE_BUCKET_NAME = "mybucket"

我尝试将 media_url 和 s3_url 设置为普通的 http,但没有任何改变。

我正在使用 django 1.5

【问题讨论】:

  • 您能告诉我在 AWS 控制台的哪个位置进行更改吗?
  • 您应该在 Django 设置文件中进行更改(默认为 settings.py )
  • 感谢您回复我。恐怕我问错问题了。我只是将 S3 用作保存下载到我的 iOS 应用程序中的文件的地方。我以前使用过http,但现在失败了,显然亚马逊改为使用https。我的应用程序已部署,我正试图让 AWS 重新响应 http。我不认为我在使用 django,但这篇文章似乎在谈论同样的事情。如果您有任何地方可以指点我解决这个问题,我将不胜感激!
  • @AndrewSmith 我明白了,抱歉,我没有这方面的经验
  • 感谢回复,原来是 Apple iOS 问题!

标签: django amazon-s3 django-storage


【解决方案1】:

我会尝试将此属性添加到您的设置中:

AWS_S3_SECURE_URLS = False

简单浏览一下 django-storages 文档后,它看起来并没有被记录,但是这个博客更多地讨论了它。 http://www.eliotk.net/05/30/force-http-with-django-storages-and-s3boto/

【讨论】:

    【解决方案2】:

    你可以用一个AWS_S3_SECURE_URLS = False 解决这个问题。然而,这些设置在当前版本 1.1.6 中不断变化,因此这里有一些关于相关设置的详细信息:

    AWS_S3_SECURE_URLS = False
    AWS_S3_URL_PROTOCOL = 'http'
    AWS_STORAGE_BUCKET_NAME = 'mybucket'
    AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
    

    AWS_S3_URL_PROTOCOL 是 new 方式,如果设置为空字符串,则允许协议相对 URL。为了向后兼容,您仍然需要 AWS_S3_SECURE_URLS。如果您使用的是 AWS_S3_URL_PROTOCOL,目前 AWS_S3_CUSTOM_DOMAIN 是 necessary。这是一些开发人员discussion 使用 S3Boto 后端实现协议相关 URL。

    还值得注意的是 Django-storages 提供了一个 S3 后端以及一个不同的 S3Boto 后端。尽管您的代码确实如此,但您的问题并没有使您正在使用的问题清晰。

    【讨论】:

    • 非常感谢您的详细回答,尤其是最后一段
    • AWS_S3_URL_PROTOCOL 应该是 'http:
    猜你喜欢
    • 2019-02-27
    • 2017-05-19
    • 2020-03-23
    • 2011-05-03
    • 2018-08-30
    • 2013-01-26
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多