S3-Access-Control-Allow-Origin Header

Czy komuś udało się dodać Access-Control-Allow-Origin do nagłówków odpowiedzi? Potrzebuję czegoś takiego:

<img src="http://360assets.s3.amazonaws.com/tours/8b16734d-336c-48c7-95c4-3a93fa023a57/1_AU_COM_180212_Areitbahn_Hahnkoplift_Bergstation.tiles/l2_f_0101.jpg" />

To żądanie get powinno zawierać w nagłówku odpowiedzi, Access-Control-Allow-Origin: *

Moje ustawienia Korsa do wiadra wyglądają tak:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Jak można się spodziewać, nie ma nagłówka odpowiedzi Origin.

Author: John Rotenstein, 2013-07-08

14 answers

Zwykle wszystko, co musisz zrobić, to "dodać konfigurację CORS" we właściwościach wiadra.

amazon-screen-shot

<CORSConfiguration> zawiera pewne wartości domyślne. To wszystko, czego potrzebowałem, by rozwiązać twój problem. Po prostu kliknij "Zapisz" i spróbuj ponownie, aby sprawdzić, czy to działa. Jeśli nie, możesz również wypróbować poniższy kod (z alxrb answer), który wydaje się działać dla większości ludzi.

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration> 

Aby uzyskać więcej informacji, możesz przeczytać ten artykuł na Editing Bucket Permission .

 121
Author: Flavio Wuensche,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-17 19:49:20

Miałem podobny problem z wczytywaniem czcionek internetowych, gdy kliknąłem na 'add Cors configuration', we właściwościach bucket, ten kod już tam był:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration> 

Po prostu kliknąłem Zapisz i zadziałało, moje niestandardowe czcionki internetowe ładowały się w IE & Firefox. Nie jestem w tym ekspertem, pomyślałem, że to może Ci pomóc.

 89
Author: alxrb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-17 19:51:53

@jordanstephens powiedział to w komentarzu, ale trochę się gubi i było dla mnie naprawdę łatwe.

Po prostu dodałem HEAD method i kliknąłem saved i zaczęło działać.

<CORSConfiguration>
	<CORSRule>
		<AllowedOrigin>*</AllowedOrigin>
		<AllowedMethod>GET</AllowedMethod>
		<AllowedMethod>HEAD</AllowedMethod> <!-- Add this -->
		<MaxAgeSeconds>3000</MaxAgeSeconds>
		<AllowedHeader>Authorization</AllowedHeader>
	</CORSRule>
</CORSConfiguration>
 30
Author: Senica Gonzalez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-24 14:12:24

To jest prosty sposób, aby to zadziałało. Wiem, że to stare pytanie, ale wciąż trudno znaleźć rozwiązanie.

Na początek, to działało dla mnie przy projekcie zbudowanym z Rails 4, Paperclip 4, CamanJS, Heroku i AWS S3.


Musisz poprosić o zdjęcie używając parametru crossorigin: "anonymous".

    <img href="your-remote-image.jpg" crossorigin="anonymous"> 

Dodaj adres URL swojej strony do CORS w AWS S3. [[17]}tutaj jest odzew z Amazon na ten temat. Prawie, wystarczy przejść do wiadra, a następnie wybrać " Properties" z zakładek po prawej stronie otwórz zakładkę "uprawnienia, a następnie kliknij " Edytuj konfigurację Kors ".

Początkowo miałem < AllowedOrigin> ustawione na *. Po prostu zmień gwiazdkę na swój adres URL, pamiętaj, aby dołączyć opcje takie jak http:// i https:// w oddzielnych wierszach. Spodziewałem się, że gwiazdka akceptuje "wszystko", ale najwyraźniej musimy być bardziej konkretni.

Tak to wygląda dla mnie.

Tutaj wpisz opis obrazka

 26
Author: Horacio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-26 22:15:43

Jeśli twoje żądanie nie określa nagłówka Origin, S3 nie uwzględni nagłówków CORS w odpowiedzi. To naprawdę mnie rzuciło, ponieważ próbowałem zwijać pliki, aby przetestować CORS, ale curl nie zawiera Origin.

 24
Author: eremzeit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 12:43:17

Patrz powyżej odpowiedzi. (ale też miałem Chrome Buga)

Nie ładuj i nie wyświetlaj obrazu na stronie w CHROME. (jeśli zamierzasz później utworzyć nową instancję)

W moim przypadku załadowałem obrazy i wyświetliłem je na stronie. Po kliknięciu utworzyłem ich nową instancję:

// there is already an html <img /> on the page, I'm creating a new one now
img = $('<img crossorigin />')[0]
img.onload = function(){
  context.drawImage(img, 0, 0)
  context.getImageData(0,0,w,h)
}
img.src = 'http://s3.amazonaws.com/my/image.png'; // I added arbitrary ?crossorigin to change the URL of this to fix it

Chrome miał już buforowaną inną wersję i nigdy nie próbował ponownie pobrać wersji crossorigin (nawet jeśli używałem crossorigin na wyświetlonych obrazach.

Aby naprawić, dodałem ?crossorigin do koniec URL obrazu (ale można dodać ?blah, to tylko dowolne, aby zmienić stan pamięci podręcznej), gdy załadowałem go do canvas.. Daj mi znać, jeśli znajdziesz lepszą poprawkę dla CHROME

 14
Author: Funkodebat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-05 04:08:25

Dodam tylko do tę odpowiedź - powyżej - która rozwiązała mój problem.

Aby ustawić AWS / CloudFront Distribution Point do przekierowania nagłówka Cors Origin, kliknij w interfejs edycji dla punktu dystrybucji:

Tutaj wpisz opis obrazka

Przejdź do zakładki zachowania i edytuj zachowanie, zmieniając nagłówki białej listy z BRAK na Białą, a następnie upewnij się, że {[0] } jest dodany do białej listy.

Tutaj wpisz opis obrazka

 11
Author: MikeiLL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-26 15:52:33

Miałem podobne problemy z załadowaniem modeli 3D z S3 do przeglądarki 3D javascript (3D HOP), ale o dziwo tylko z pewnymi typami plików (.nxs).

To co naprawiłem dla mnie to zmiana AllowedHeader z domyślnego Authorization na * w CORS config:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
 7
Author: VME,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 17:56:21
  1. Ustaw konfigurację Kors w Ustawieniach uprawnień dla Twojego wiadra S3

    <?xml version="1.0" encoding="UTF-8"?>
    <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
        <CORSRule>
            <AllowedOrigin>*</AllowedOrigin>
            <AllowedMethod>GET</AllowedMethod>
            <MaxAgeSeconds>3000</MaxAgeSeconds>
            <AllowedHeader>Authorization</AllowedHeader>
        </CORSRule>
    </CORSConfiguration> 
    
  2. S3 dodaje nagłówki CORS tylko wtedy, gdy żądanie http ma nagłówek Origin.

  3. CloudFront nie wykonuje forward Origin header domyślnie

    Musisz dodać nagłówek Origin do białej listy w Ustawieniach zachowania dla twojej dystrybucji CloudFront.

 3
Author: Pawel Furmaniak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 16:27:17

Naprawiłem to pisząc:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

Dlaczego <AllowedHeader>*</AllowedHeader> działa, a <AllowedHeader>Authorization</AllowedHeader> nie?

 2
Author: Pablo García Miranda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-24 10:55:01

Próbowałem wszystkich powyższych odpowiedzi i nic nie działało. W rzeczywistości potrzebujemy 3 kroków z powyższych odpowiedzi razem, aby to działało:

  1. Zgodnie z sugestią Flavio; Dodaj konfigurację CORS na wiadrze:

    <CORSConfiguration>
       <CORSRule>
         <AllowedOrigin>*</AllowedOrigin>
         <AllowedMethod>GET</AllowedMethod>
       </CORSRule>
     </CORSConfiguration>
    
  2. Na obrazku; wymień crossorigin:

    <img href="abc.jpg" crossorigin="anonymous">
    
  3. Używasz CDN? Jeśli wszystko działa dobrze łącząc się z serwerem origin, ale nie przez CDN; oznacza to, że potrzebujesz pewnych ustawień na CDN, takich jak nagłówki accept CORS. Dokładne ustawienie zależy od tego, który CDN bierzesz.

 2
Author: Deepak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-14 20:05:25

Dotarłem do tego wątku i Żadne z powyższych rozwiązań nie znalazło zastosowania w moim przypadku. Okazało się, że po prostu musiałem usunąć końcowy ukośnik w konfiguracji Kors mojego wiadra.

:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.mywebsite.com/</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Wygrane:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://www.mywebsite.com</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>
Mam nadzieję, że to kogoś uratuje.
 1
Author: charneykaye,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-19 19:14:59

Fwuensche "answer" jest corret do skonfigurowania CDN; robiąc to, usunąłem MaxAgeSeconds.

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
 0
Author: Mich. Gio.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-16 11:13:12

W najnowszej konsoli zarządzania S3, po kliknięciu konfiguracji CORS na karcie Uprawnienia, wyświetli się domyślna przykładowa konfiguracja CORS. Ta konfiguracja nie jest jednak aktywna! Musisz najpierw kliknąć Zapisz, aby aktywować CORS.

Zajęło mi zbyt długo, aby to rozgryźć, mam nadzieję, że to zaoszczędzi komuś trochę czasu.

 0
Author: hackel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-15 18:13:18