5

我正在通过 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 的一个可能类似的帖子,

从 jquery 或 XMLHttpRequest 到亚马逊 aws 的 HTTP GET 失败,并且 Access-Control-Allow-Origin 不允许使用 Origin

似乎表明,如果我有一个托管在 S3 上的网站,它不能将其配置为使 XMLHttpRequests 获取到第 3 方资源?

我觉得我在绕圈子......那里有人有任何线索/建议吗?谢谢。

4

3 回答 3

1

您必须公开访问控制标头。尝试这个:

<CORSRule>
  <AllowedOrigin>*</AllowedOrigin>
  <AllowedMethod>GET</AllowedMethod>
  <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
  <ExposeHeader>Access-Control-Allow-Methods</ExposeHeader>
</CORSRule>
于 2017-09-19T17:52:38.887 回答
0

这里可能与我们刚刚在我们的应用程序上完成的示例有一些关系,该示例与 https 相关,这是我们一些客户端机器上的硬编码配置。我不知道这到底是什么意思,但它可能是一个检查的地方。

而不是 http:// 尝试 https://

对 Amazon S3 的 XMLHttpRequest 仅在某些计算机上失败

于 2014-12-09T18:46:36.360 回答
-1

我认为您很困惑,或者我误读了您的问题。

您在您的站点上启用 CORS,以便其他站点可以向您的页面发出请求。

在您的 S3 站点上启用 CORS 将允许 example.com 与您的 S3 页面对话。它不允许您的网站与 example.com 对话。

为了让您向其他域发出请求,他们必须启用权限。您不能神奇地为他们的域打开它。这就像说您允许自己走进白宫并使用总统的浴室。当您跳过围栏时,特勤局将用武力拒绝该请求。

于 2013-01-23T18:25:08.443 回答