11

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.

画像をHTTPSではなくHTTPとして提供する必要があります

私の設定は次のとおりです。

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に設定しようとしましたが、何も変更されませんでした。

django1.5を使用しています

4

2 に答える 2

16

このプロパティを設定に追加してみます。

AWS_S3_SECURE_URLS = False

django-storagesのドキュメントを一目見ただけでは文書化されていないようですが、このブログではもう少し詳しく説明しています。 http://www.eliotk.net/05/30/force-http-with-django-storages-and-s3boto/

于 2013-03-12T21:16:39.213 に答える
9

あなたはおそらくこれを単一ので解決することができ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は新しい方法であり、空の文字列に設定すると、プロトコル相対URLが許可されます。下位互換性のために、AWS_S3_SECURE_URLSが必要です。また、現時点では、AWS_S3_URL_PROTOCOLを使用している場合は、AWS_S3_CUSTOM_DOMAINが必要です。S3Botoバックエンドを使用したプロトコル相対URLの実装に関する開発者向けのディスカッションを次に示します。

Django-storagesがS3バックエンドと別のS3Botoバックエンドを提供することも注目に値します。あなたの質問はあなたが使用しているものを明確にしませんが、あなたのコードは明確にします。

于 2013-03-12T21:31:21.087 に答える