【发布时间】:2017-12-30 02:44:44
【问题描述】:
我们使用 Amazon S3 + CloudFront 来提供 JSON 文件。我们上传了两个文件,让我们将其视为 j1.json 和 j2.json。这两个文件最初都在响应中响应了有效的 CORS 标头,但是当在 j2.json 上运行失效时,它的标头响应发生了变化,我们面临着 CORS 问题。
在 S3 存储桶上设置了 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>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
j1.json 的响应标头
两个 JSON 文件在同一个存储桶中,但 j2.json 响应缺少这些标头
Access-Control-Allow-Methods →GET
Access-Control-Allow-Origin →*
Access-Control-Max-Age →3000
我们尝试删除并再次上传对象,它没有响应响应中的 CORS 标头。这个问题的可能原因是什么?又该如何解决呢?
【问题讨论】:
-
清除浏览器缓存并在其他浏览器中尝试。发生这种情况时最可能的解释是文件的过时缓存副本
-
@sideshowbarker 我们已经尝试过不同的浏览器,清除缓存并重新加载。邮递员也一样。到目前为止没有运气。
-
CloudFront 分配是否配置为将
Access-Control-Request-Headers、Access-Control-Request-Method和Origin标头转发到 S3(在“缓存行为”中)?在使用邮递员进行测试时,您是否发送了Origin:标头(和其他标头)?可以显示网址吗? -
@Michael-sqlbot 谢谢,CloudFront 分发转发标头解决了这个问题。请提交作为答案,我会投票并将其标记为已解决。
标签: javascript amazon-s3 cors amazon-cloudfront