2013-09-25 29 views
6

Tôi đang cố truy cập tệp html nằm trong S3 từ yêu cầu ajax và tôi nhận được lỗi 403.AWS S3 CORS 403 Lỗi với OPTIONS yêu cầu

Tôi đọc trực tuyến AWS rằng nếu tôi làm như vậy, tôi cần thiết lập các quy tắc AWS CORS để sửa lỗi 403.

Tuy nhiên, tôi đã thử hai ngày và tôi không có may mắn. Dưới đây là cấu hình CORS tôi:

<?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> 

Và yêu cầu HTTP của tôi trông giống như:

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 

bất cứ ai có thể giúp tôi để xem những gì tôi đã bỏ lỡ?

Cảm ơn!

+0

Hóa ra vấn đề không phải là S3 mà là cloudfront. Có ai cố gắng chuyển tiếp cấu hình CORS từ S3 lên cloudfront không? –

Trả lời

0

HTTP 403 (Frobidden) không nhất thiết có nghĩa là bạn cần CORS. Một tùy chọn là có tất cả các yêu cầu đến cloudfront (cùng nguồn gốc) và trong phân phối của bạn, một số xuất xứ và hành vi. Ví dụ:

Beavior -> Origin 

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

Nhưng nếu bạn thực sự cần yêu cầu cross-xứ, Các tiêu đề CORS nên được chuyển tiếp bởi CloudFront và có hành vi tương tự, trong ví dụ của bạn, bạn có thể muốn trở thành dễ dãi hơn với các tiêu đề bạn cho phép (<AllowedHeader>*</AllowedHeader> ?). Nhưng điều đó sẽ liên quan nhiều hơn đến hành vi của trình duyệt so với CLoudFront hoặc S3.

Các vấn đề liên quan