2013-09-25 13 views
6

Ajax isteğinden S3'te bulunan bir html dosyasına erişmeye çalışıyorum ve 403 hatası aldım.AWS S3 CORS 403 OPTIONS isteği ile hata

AWS'i çevrimiçi okudum, böyle bir şey yaparsam 403 hatasını düzeltmek için AWS CORS kurallarını ayarlamanız gerekir. Bununla birlikte, iki gün çalışıyorum ve hiç şansım yok. İşte benim CORS yapılandırma:

<?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> 
    <ExposeHeader>XMLHttpRequest</ExposeHeader> 
    <AllowedHeader>x-csrftoken</AllowedHeader> 
</CORSRule> 
</CORSConfiguration> 

Ve HTTP isteği gibi görünür:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language en-US,en;q=0.5 
Access-Control-Request-He... x-csrftoken 
Access-Control-Request-Me... GET 
Connection keep-alive 
Host xxxxxxxxx.cloudfront.net 
Origin http://localhost:8000 
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0 

kimse kaçırdım ne olduğunu görmek için bana yardımcı olabilir?

Teşekkürler!

+0

Sorun S3 değil, bulut cephesi ortaya çıkıyor. Hiç kimse CORS yapılandırmasını S3'ten cloudfront'a iletmeye çalıştı mı? –

cevap

0

HTTP 403 (Frobidden), CORS'lere ihtiyacınız olduğu anlamına gelmez. Bir seçenek, tüm istekleri cloudfront'a (aynı kaynak) ve sizin dağıtımınızda çeşitli köken ve davranışlara sahip olmaktır. Ör: aslında, CORS başlıkları CloudFront tarafından iletilmelidir çapraz menşe isteklerini ihtiyaç ve aynı davranışı varsa

Beavior -> Origin 

/api/* -> my.api.com 
/static/* -> my.s3.bucket 

Ama sizin örnekte muhtemelen izin başlıklarıyla daha müsamahakâr olmak istiyorum

( <AllowedHeader>*</AllowedHeader> ?). Ancak bu, tarayıcı davranışıyla CLoudFront veya S3'ten daha alakalı olacaktır.