2012-07-21 10 views
18

Adresy URL miniatur mają w nich parametry. Nie jestem pewien dlaczego. Myślę, że mają one związek z przeglądarką sorl-thumbnail lub boto, z której korzystamy. Jak usunąć dodatkowe parametry z adresu URL? Czy pochodzą one z boto/s3 lub sorl. Nie mam pojęcia, jak debugować.Podpis/Wygasa/Identyfikator klucza dostępu pojawia się w parametrach URL. Django/Boto/S3

+0

czy możesz tutaj wkleić przykładowy adres URL? – Keshi

+0

Oto przykład: https://eniyiyorumlar.s3.amazonaws.com/media/product_photos/yuruyus-bandi/dynamic-v100.jpg?Signature=4C45X28vHf07rkVXj4hvqxAxTeg%3D&Expires=1342920217&AWSAccessKeyId=AKIAJIDT4T4CVUPDP7RQ - pochodzi od boto, ja nie użyj sorlu i otrzymam takie samo wyjście. Masz to samo pytanie: – Intenex

Odpowiedz

5

Dodatkowe parametry, które są dodawane, służą do implementacji Query String Authentication. Umożliwia to wstępne podpisanie adresu URL do zasobów prywatnych przechowywanych w S3. Dopóki ktoś ma wstępnie podpisany adres URL (i nie wygasł) będzie mógł uzyskać dostęp do tych zasobów, nawet jeśli nie są one publicznie dostępne.

Bez dodatkowych parametrów nie można zapewnić publicznego dostępu do tych prywatnych zasobów S3.

+0

Dlaczego zasoby S3 są prywatne? jak mogę je upublicznić? – LILI

+0

Cała zawartość jest domyślnie prywatna w S3. Możesz go zmienić na publicznie czytelny, używając metody make_public() obiektu Key w boto lub możesz użyć Konsoli AWS, jeśli wolisz używać GUI. – garnaat

+0

Boto3 nie wie, czy są prywatne, czy nie - domyślnie podpisujemy URL, aby można było uzyskać do niego dostęp w dowolny sposób. Jeśli są publiczne, możesz zastosować to ustawienie, aby podpis był pominięty pod adresem URL. – r3m0t

58

Zastosowanie: AWS_QUERYSTRING_AUTH = False

+18

Ta odpowiedź wymaga więcej szczegółów. – rjsvaljean

+4

Jest to raczej słabo udokumentowane, ale to naprawdę jest to, czego potrzebujesz. Jeśli twoje wiadro jest publicznie dostępne dla wszystkich (które chcesz dla mediów), to usuwa parametry uwierzytelniania. – Alper

2

działa na mnie: AWS_QUERYSTRING_AUTH = False

pomocą tego https://github.com/mstarinteractive/django-s3storage

from myapp.s3storage import S3BotoStorage 
from django.contrib.staticfiles.storage import CachedFilesMixin 


class CachedStaticS3BotoStorage(CachedFilesMixin, S3BotoStorage): 

    """Extends S3BotoStorage to save static files with hashed filenames.""" 
    pass 
StaticRootS3BotoStorage = lambda: CachedStaticS3BotoStorage(location='static') 
0

To dziwne zachowanie: Dokumenty Google przeglądarka będzie działać i wyświetlać podgląd bez parametry, ale powie, że nie ma podglądu, jeśli Boto dołącza podpis.

<iframe src="{% trans "https://docs.google.com/viewer?embedded=true&amp;url=" %}{{ document.file.url }}" width="451" height="390" style="border: none;"></iframe>

I musi być brakuje czegoś.

Powiązane problemy