2015-05-07 18 views
7

Mam następującą konfigurację CORS dla mojego wiadra Amazon S3. Chodzi o to, że konfiguracja wydaje się być całkowicie ignorowana. Nie otrzymuję żadnych nagłówków Access-Control-Allow-Origin podczas żądania obiektów z tego zasobnika. Czy ktoś inny ma podobny problem lub wskazówki dotyczące debugowania?Brakujące nagłówki Access-Control-Allow-Origin z łyżki Amazon S3

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

To moja polityka wieloczynnościowy:

{ 
"Version": "2012-10-17", 
"Statement": [ 
    { 
     "Sid": "AddPerm", 
     "Effect": "Allow", 
     "Principal": "*", 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::example.com/*" 
    } 
]} 
+0

Czy używasz punktu końcowego S3 lub punktu końcowego witryny internetowej podczas pobierania zasobów? –

+0

@RakeshBollampally Nie używam punktu końcowego witryny. – sebbo

+0

Czy muszę używać punktu końcowego witryny? – sebbo

Odpowiedz

1

Musisz dostarczyć Origin nagłówek na żądanie, aby uzyskać nagłówek Access-Control-Allow-Origin na odpowiedź.

Korzystanie curl:

$ curl -XGET -H 'Origin: www.example.com' https://my-bucket.s3.amazonaws.com/doc/2006-03-01/

Należy zauważyć, że - w przeciwieństwie do dokumentacji - konfiguracja CORS jest honorowana nawet jeśli nie pozwalają "Static Website Hosting" na morzu. Możesz uzyskać dostęp do zasobnika przez subdomenę wiadra (jak wyżej) lub przez pełną ścieżkę: https://s3.amazonaws.com/my-bucket/doc/2006-03-01

+0

Nadal nie ma różnicy :-(nadal mogę uzyskać dostęp do wszystkich plików w wiadrze bez określania nagłówka początkowego. Czy muszę dostosować coś w mojej zasadzie dotyczącej wiaderek? pytanie z zawartością mojej polityki – sebbo

+0

@sebbo - Myślę, że źle rozumiesz, co robi CORS. Zobacz tutaj dla wyjaśnienia: http://stackoverflow.com/a/10636765/2838391 CORS jest używany do współdzielenia zasobów między domenami. plików, CORS nie będzie stosowane –

+0

@RakeshBollampally Tak, ale co miałem na myśli to, że kiedy definiuję politykę CORS dla mojego wiadra, to powinienem móc pobierać zasoby tylko przy określaniu nagłówka Origin z jednym z dozwolonych początków? pobrać zasób z mojego zasobnika mogę to zrobić bez określenia nagłówka Origin, nawet jeśli obecna jest polityka CORS – sebbo

0

Nie jestem pewien, dlaczego dodanie dodatkowej xml informacji, nie widzę, że w dokumentacji S3. Po prostu, to powinno działać:

<CORSConfiguration> 
<CORSRule> 
    <AllowedOrigin>http://www.example.com</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <MaxAgeSeconds>3000</MaxAgeSeconds> 
    <AllowedHeader>*</AllowedHeader> 
</CORSRule> 
<CORSRule> 
    <AllowedOrigin>http://localhost:8100</AllowedOrigin> 
    <AllowedMethod>GET</AllowedMethod> 
    <MaxAgeSeconds>3000</MaxAgeSeconds> 
    <AllowedHeader>*</AllowedHeader> 
</CORSRule> 
</CORSConfiguration> 
+0

Masz rację, ale to nie rozwiązało problemu :-( – sebbo