Django存储s3媒体网址是https://而不是http://

Yar*_*nST 10 django amazon-s3 django-storage

使用django-storage s3提供媒体时,正在生成的媒体网址如下所示:

https://mybucket.s3.amazonaws.com/myimage.jpg?Signature=5ifoyLqzmtfVNS1ovfzVvN92RH0%3D&Expires=1363124819&AWSAccessKeyId=AKIAJ7ZTU7K4SPYKGOFA
Run Code Online (Sandbox Code Playgroud)

由于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.
Run Code Online (Sandbox Code Playgroud)

我需要将图像作为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"
Run Code Online (Sandbox Code Playgroud)

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

我正在使用django 1.5

Eri*_*ler 16

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

AWS_S3_SECURE_URLS = False
Run Code Online (Sandbox Code Playgroud)

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


JCo*_*ton 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
Run Code Online (Sandbox Code Playgroud)

AWS_S3_URL_PROTOCOL是方法,如果设置为空字符串,则允许协议相对URL.为了向后兼容,您仍需要AWS_S3_SECURE_URLS.目前,如果您使用AWS_S3_URL_PROTOCOL,则需要 AWS_S3_CUSTOM_DOMAIN.以下是一些关于使用S3Boto后端实现协议相对URL的开发人员讨论.

同样值得注意的是Django-storages提供S3后端以及不同的S3Boto后端.虽然您的代码确实存在,但您的问题并未使您使用的问题清晰明了.

  • AWS_S3_URL_PROTOCOL 应该是 'http: (2认同)