Czy ktoś zdołał 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 odpowiedzi nagłówek, Access-Control-Allow-Origin: *
Moje ustawienia CORS dla segmentu wyglądają następująco:
<?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 Origin
nagłówka odpowiedzi.
Odpowiedzi:
Zwykle wszystko, co musisz zrobić, to „Dodaj konfigurację CORS” we właściwościach segmentu.
<CORSConfiguration>
Przychodzi z jakimiś wartościami domyślnymi. To wszystko, czego potrzebowałem, aby rozwiązać twój problem. Po prostu kliknij „Zapisz” i spróbuj ponownie, aby sprawdzić, czy zadziałało. Jeśli tak się nie stanie, możesz również wypróbować poniższy kod (z odpowiedzi na alxrb), który wydaje się działać dla większości ludzi.Aby uzyskać więcej informacji, zapoznaj się z tym artykułem na temat edytowania uprawnień segmentu .
źródło
HEAD
doAllowedMethod
sMiałem podobny problem z ładowaniem czcionek internetowych, kiedy kliknąłem „dodaj konfigurację CORS”, we właściwościach segmentu ten kod już tam był:
Właśnie kliknąłem przycisk Zapisz i zadziałało, moje niestandardowe czcionki internetowe ładowały się w IE i Firefox. Nie jestem w tym ekspertem, pomyślałem, że to może ci pomóc.
źródło
<AllowedHeader>*</AllowedHeader>
aby to działało (lepiej, aby przy tej okazji wprowadzić nową zasadę dla swojej witryny)Jeśli twoje żądanie nie określa
Origin
nagłówka, 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 obejmujeOrigin
.źródło
img
tagu? Nie mogę wysyłać różnych nagłówków, przeglądarka wysyła żądanie@jordanstephens powiedział to w komentarzu, ale w pewnym sensie się gubi i było dla mnie naprawdę łatwe.
Po prostu dodałem metodę HEAD i kliknąłem zapisaną i zaczęło działać.
źródło
HEAD
Metoda zezwalająca załatwiła sprawę.Jest to prosty sposób, aby to zadziałało.
Wiem, że to stare pytanie, ale wciąż trudno jest znaleźć rozwiązanie.
Na początek zadziałało to dla mnie w projekcie zbudowanym z Rails 4, Paperclip 4, CamanJS, Heroku i AWS S3.
Musisz zażądać obrazu za pomocą
crossorigin: "anonymous"
parametru.Tak to dla mnie wygląda.
źródło
<img>
, alecrossOrigin="true"
pomyliłem się. DZIĘKUJĘ CI!Zobacz powyższe odpowiedzi. (ale miałem też chromowany błąd)
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 ich kliknięciu utworzyłem ich nową instancję:
Chrome już buforował inną wersję i NIGDY nie próbował ponownie pobrać
crossorigin
wersji (nawet jeśli korzystałemcrossorigin
z wyświetlanych obrazów).Aby to naprawić, dodałem
?crossorigin
na końcu adresu URL obrazu (ale możesz dodać?blah
, zmiana stanu pamięci podręcznej jest po prostu arbitralna), gdy załadowałem go na płótno. Daj mi znać, jeśli znajdziesz lepszą poprawkę dla CHROMEźródło
Dodam tylko do tej odpowiedzi - powyżej - która rozwiązała mój problem.
Aby ustawić punkt dystrybucji AWS / CloudFront, aby torward nagłówek początkowy CORS, kliknij interfejs edycji punktu dystrybucji:
Przejdź na kartę zachowania i edytuj zachowanie, zmieniając „Pamięć podręczna na podstawie wybranych nagłówków żądań” z Brak na Biała
Origin
lista , a następnie upewnij się, że została dodana do pola białej listy. Aby uzyskać więcej informacji, zobacz Konfigurowanie CloudFront w celu przestrzegania ustawień CORS w Dokumentach AWS.źródło
HTTP Request Methods
należy ustawić w AWS. I na to pytanie nie widzę potrzeby ustawiania w dowolnym miejscu. Jeśli mówisz w aplikacji, która żąda zasobu, uważam, że poprosiłbyś o plik po nimurl string
: tj. Obraz, wideo, plik audio.Miałem podobne problemy z ładowaniem modeli 3D z S3 do javascript 3D viewer (3D HOP), ale o dziwo tylko w przypadku niektórych typów plików (.nxs).
Naprawiłem to, zmieniając
AllowedHeader
z domyślnegoAuthorization
na*
konfigurację CORS:źródło
<AllowedHeader>*</AllowedHeader>
W październiku 2017 r. Musiałem tak ustawić gwiazdkę dla Chrome. Dziękuję bardzo! (Nie zapomnij również wyczyścić pamięci podręcznej przeglądarki po ustawieniu).AllowedHeader
. Miałem również ten sam problem, ale okazało się, że przeglądarka buforowała poprzednią odpowiedź (MaxAgeSeconds
). W Ustawieniach DevTools możesz zignorować pamięć podręczną, gdy konsola jest otwarta. Kiedy to zrobiono, zaczęło działać dla mniePodobnie jak inne mają stany, najpierw musisz mieć konfigurację CORS w swoim segmencie S3:
Ale w moim przypadku po wykonaniu tej czynności nadal nie działało. Korzystałem z Chrome (prawdopodobnie ten sam problem z innymi przeglądarkami).
Problem polegał na tym, że Chrome buforował obraz z nagłówkami (niezawierającymi danych CORS) , więc bez względu na to, co próbowałem zmienić w AWS, nie widziałem moich nagłówków CORS.
Po wyczyszczeniu pamięci podręcznej Chrome i ponownym załadowaniu strony obraz miał oczekiwane nagłówki CORS
źródło
Próbowałem wszystkich powyższych odpowiedzi i nic nie działało. Właściwie potrzebujemy 3 kroków od powyższych odpowiedzi, aby zadziałało:
Jak sugeruje Flavio; dodaj konfigurację CORS do swojego segmentu:
Na obrazie; wspomnieć crossorigin:
Czy używasz CDN? Jeśli wszystko działa poprawnie, połączenie z serwerem pochodzenia, ale NIE przez CDN; oznacza to, że potrzebujesz pewnych ustawień w sieci CDN, takich jak akceptacja nagłówków CORS. Dokładne ustawienie zależy od używanego CDN.
źródło
Doszedłem do tego wątku i żadne z powyższych rozwiązań nie okazało się mieć zastosowanie w mojej sprawie. Okazuje się, że po prostu musiałem usunąć ukośnik z
<AllowedOrigin>
adresu URL w konfiguracji CORS mojego segmentu.Nie działa:
Wygrywa:
Mam nadzieję, że uratuje to komuś pociągnięcie za włosy.
źródło
Ustaw konfigurację CORS w ustawieniach uprawnień dla swojego segmentu S3
S3 dodaje nagłówki CORS tylko wtedy, gdy żądanie HTTP ma
Origin
nagłówek.CloudFront domyślnie nie przekazuje
Origin
nagłówkaMusisz umieścić
Origin
nagłówek na białej liście w ustawieniach zachowania dla swojej dystrybucji CloudFront.źródło
Naprawiłem to pisząc:
Dlaczego
<AllowedHeader>*</AllowedHeader>
działa a<AllowedHeader>Authorization</AllowedHeader>
nie?źródło
„odpowiedź” fwuensche jest słuszna do założenia CDN; robiąc to, usunąłem MaxAgeSeconds.
źródło
W najnowszej konsoli zarządzania S3 kliknięcie konfiguracji CORS na karcie Uprawnienia spowoduje wyświetlenie domyślnej przykładowej konfiguracji CORS. Ta konfiguracja nie jest jednak aktywna! Musisz najpierw kliknąć Zapisz, aby aktywować CORS.
Zbyt długo mi to zajęło, mam nadzieję, że to pozwoli komuś zaoszczędzić trochę czasu.
źródło
Ta konfiguracja rozwiązała dla mnie problem:
źródło
Ostrzeżenie - włamanie.
Jeśli użyjesz S3Image do wyświetlenia obrazu, a następnie spróbujesz go pobrać przez pobranie, być może wstawisz go do pliku PDF lub wykonasz inne przetwarzanie, pamiętaj, że Chrome zbuforuje pierwszy wynik, który nie wymaga żądania wstępnej inspekcji CORS, oraz następnie spróbuj uzyskać ten sam zasób bez żądania OPCJI wstępnego pobierania i nie powiedzie się z powodu ograniczeń przeglądarki.
Innym sposobem obejścia tego jest upewnienie się, że S3Image zawiera crossorigin: „poświadczenia użycia”, jak wspomniano powyżej. W pliku, którego używasz S3Image (mam komponent, który tworzy buforowaną wersję S3Image, więc jest to dla mnie idealne miejsce), przesłoń prototypową metodę imageEl S3Image, aby wymusić włączenie tego atrybutu.
Problem 403 został już rozwiązany. Co za ból!
źródło
nie jest dobrym pomysłem, ponieważ * pozwalasz dowolnej witrynie uzyskać dostęp do plików w swoim segmencie. Zamiast tego należy określić, które pochodzenie jest dokładnie dozwolone do korzystania z zasobów z wiadra. Zazwyczaj jest to nazwa Twojej domeny
lub jeśli chcesz uwzględnić wszystkie możliwe subdomeny:
źródło
Poniżej znajduje się konfiguracja i dla mnie dobrze działa. Mam nadzieję, że pomoże to rozwiązać Twój problem z AWS S3.
źródło
Przyjęta odpowiedź działa, ale wydaje się, że jeśli przejdziesz bezpośrednio do zasobu, nie będzie żadnych nagłówków krzyżowych. Jeśli korzystasz z Cloudfront, spowoduje to, że Cloudfront zbuforuje wersję bez nagłówków. Gdy przejdziesz do innego adresu URL, który ładuje ten zasób, pojawi się problem krzyżowania źródeł.
źródło
Jeśli twoje ustawienia CORS ci nie pomogą.
Sprawdź, czy konfiguracja S3 jest poprawna. Miałem niepoprawną nazwę wiadra w
Storage.configure
. Użyłem krótkiej nazwy segmentu, co spowodowało błąd:źródło
Najpierw aktywuj CORS w swoim segmencie S3. Użyj tego kodu jako wskazówki:
2) Jeśli nadal nie działa, dodaj również tag „crossorigin” o wartości „*” do tagów img. Umieść to w pliku HTML:
źródło
Co do tego, co jest warte, miałem podobny problem - podczas próby dodania określonego dozwolonego źródła (nie
*
).Okazuje się, że musiałem poprawić
do
(zwróć uwagę na ostatniego slaha w adresie URL)
Mam nadzieję, że to komuś pomoże
źródło