javascript - Amazon S3 CORS 配置 XMLHttpRequest GET

标签 javascript amazon-s3 xmlhttprequest amazon cors

我通过 Amazon S3 托管一个静态网站,上面有一些 Javascript,可以调用另一个域并解析 XML、JSON 或它获得的任何内容。

我关注了 stackoverflow 上的许多帖子以及它链接到的各种博客帖子,这些帖子声称可以让它正常工作,但即使在非常密切地关注之后,我也永远无法复制结果。

 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>

我什至尝试在规则中添加和不添加以下内容,

 <AllowedHeader>*</AllowedHeader>

以下链接允许您通过发送 XMLHttpRequests 来测试 CORS 是否已启用,但它表示它无效,因此 CORS 未正确设置或识别。

http://client.cors-api.appspot.com/client/

此处的 Amazon S3 文档中建议了一个可能的线索,

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETcors.html

也就是说我们需要设置“s3:GetCORSConfiguration”权限,这是我通过类似......的一行完成的

"操作": ["s3:GetObject", "s3:GetCORSConfiguration"],

在 AWS 控制面板的“编辑存储桶策略”部分中出现错误并且无法保存,因为它无法识别此操作?

这里有一篇关于 stackexchange 的可能相似的帖子,

HTTP GET to amazon aws from jquery or XMLHttpRequest fails with Origin is not allowed by Access-Control-Allow-Origin

似乎暗示如果我有一个托管在 S3 上的网站,它无法将其配置为生成 XMLHttpRequests,这些请求是 GET 到第 3 方资源?

我觉得自己在兜圈子……有人有任何线索/建议吗?谢谢。

最佳答案

您必须公开访问控制 header 。试试这个:

<CORSRule>
  <AllowedOrigin>*</AllowedOrigin>
  <AllowedMethod>GET</AllowedMethod>
  <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
  <ExposeHeader>Access-Control-Allow-Methods</ExposeHeader>
</CORSRule>

关于javascript - Amazon S3 CORS 配置 XMLHttpRequest GET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486486/

相关文章:

javascript - 如何创建javascript自动关闭elament的效果?

java - GAE 和 S3 上的 GWT

authentication - XmlHttpRequest 基本身份验证问题

javascript - 使用jquery滚动页面无法正常工作

javascript - 直方图钟形曲线上的正确旗帜位置

ios - 使用 Cocoapods 更新 AWSS3

ruby-on-rails - HTML5 亚马逊 S3 直接上传

javascript - 检测当前的 Internet Explorer 安全区域

javascript - 在控制台中抑制 Chrome 'Failed to load resource' 消息

c# - 关闭脚本标记和 document.write 在 Visual Studio 中被标记