2013-03-12 12 views
8

Kiedy obsługujących nośniki z S3 django-magazynowej, adres URL nośnika, który jest generowany jest coś takiego:Django Składowanie s3 mediów url jest https: // zamiast http: //

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

powodując obrazów aby nie być wyświetlane z powodu 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. 

muszę obrazy mają być podawane jako HTTP nie HTTPS

Moje ustawienia to:

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

Próbowałem ustawić media_url, a s3_url na normalny http, ale nic to nie zmieniło.

Używam Django 1.5

+0

Czy możesz mi powiedzieć, gdzie w konsoli AWS dokonałbym tej zmiany? –

+0

Powinieneś dokonać zmiany w pliku ustawień Django (domyślnie jest to settings.py) – YardenST

+0

Dziękuję za skontaktowanie się ze mną. Obawiam się, że zadaję niewłaściwe pytanie. Po prostu używam S3 jako miejsca do przechowywania plików, które pobieram do mojej aplikacji na iOS. Poprzednio używałem http, ale to się teraz nie udaje, najwyraźniej Amazon zmienił się na https. Moja aplikacja jest wdrożona i staram się, aby AWS wrócił do odpowiadania na http. Nie sądzę, że używam django, ale ten post wydawał się mówić o tym samym. Jeśli masz gdziekolwiek wskazać mi, abym to zrozumiał, byłbym wdzięczny! –

Odpowiedz

8

Prawdopodobnie można rozwiązać ten problem za pomocą pojedynczego AWS_S3_SECURE_URLS = False. Jednak te ustawienia są w ruchu, jak w obecnej wersji 1.1.6 więc tutaj jest trochę więcej szczegółów na temat powiązanych ustawień:

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 pada nowy sposób i jeśli jest ustawiona na pusty ciąg pozwala protokołu względem Adresy URL. Aby uzyskać kompatybilność wsteczną, nadal potrzebujesz AWS_S3_SECURE_URLS. A w chwili obecnej AWS_S3_CUSTOM_DOMAIN jest necessary, jeśli używasz AWS_S3_URL_PROTOCOL. Oto programista discussion dotyczący implementowania względnych adresów URL protokołu z backendem S3Boto.

Warto również zauważyć, że Django-storages dostarcza backend S3, a także inny backend S3Boto. Twoje pytanie nie sprawia, że ​​ten, którego używasz, jest jasny, mimo że robi to twój kod.

+0

wielkie dzięki za szczegółową odpowiedź, a zwłaszcza ostatni akapit – YardenST

+0

AWS_S3_URL_PROTOCOL powinien być "http: –

Powiązane problemy