使用django-storage s3提供媒体时,正在生成的媒体网址如下:
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
答案 0 :(得分:15)
我会尝试将此属性添加到您的设置中:
AWS_S3_SECURE_URLS = False
在简短地看一下django-storages文档之后,它看起来并没有被记录下来,但是这个博客更多地讨论了它。 http://www.eliotk.net/05/30/force-http-with-django-storages-and-s3boto/
答案 1 :(得分:8)
你可以用一个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。以下是使用S3Boto后端实现协议相对URL的开发人员discussion。
值得注意的是Django-storages提供S3后端以及不同的S3Boto后端。虽然您的代码确实存在,但您的问题并未使您使用的问题清晰。