ajax – AWS S3 CORS 403 OPTIONS请求出错

前端之家收集整理的这篇文章主要介绍了ajax – AWS S3 CORS 403 OPTIONS请求出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从ajax请求访问驻留在S3中的html文件,我收到403错误.

我在线阅读AWS,如果我这样做,我需要设置AWS CORS规则来修复403错误.

但是,我已经尝试了两天而且没有任何运气.这是我的CORS配置:

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

我的HTTP请求如下:

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

谁能帮我看看我错过了什么?

谢谢!

解决方法

HTTP 403(Frobidden)并不一定意味着您需要CORS.一种选择是将所有请求发送到云端(相同来源),并在您的分发中提供多个来源和行为.例如:
Beavior   ->  Origin

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

但是,如果您确实需要跨源请求,则CORS标头应该由cloudfront转发并具有相同的行为,在您的示例中,您可能希望对您允许的标头更宽松(< AllowedHeader> *< / AllowedHeader> ?).但这与浏览器行为的关系比CLoudFront或S3更重要.

猜你在找的Ajax相关文章