Amazon S3 - 不存在“Access-Control-Allow-Origin”标头
Posted
技术标签:
【中文标题】Amazon S3 - 不存在“Access-Control-Allow-Origin”标头【英文标题】:Amazon S3 - No 'Access-Control-Allow-Origin' header is present 【发布时间】:2018-07-27 03:04:33 【问题描述】:这似乎是 *** 上的热门话题,但我还没有找到解决问题的方法。我正在使用WavesurferJS 从 S3 存储桶中获取音频并在播放曲目时生成波形。
现在,每次我在曲目上按播放时,歌曲开始播放,但波形没有开始生成,我得到了臭名昭著的 Failed to load http://s3bucket-url.com: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://production.env.com' is therefore not allowed access.
我试图摆弄 S3 存储桶上的 CORS 设置,目前看起来像这样
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我也试过在AllowedOrigin
中添加我们生产环境的url,但是好像没有效果。
在从存储桶中获取流文件的 php 文件中,我还添加了 header("Access-Control-Allow-Origin: *");
无论我使用的浏览器如何,都会弹出此案例。
【问题讨论】:
为什么(什么上下文)需要授权?您在 GET 之前看到 OPTIONS 请求吗? 嘿 Kleioz,我实际上不需要授权。就像我最近在下面所说的那样,它就是我的配置现在的样子。我尝试了许多不同的方法来克服 CORS 错误,方法是删除或添加 Auth 以及其他设置,但没有任何运气。 好的,但是您绝对应该看看您的 OPTIONS 请求是如何处理的。您的浏览器应在 GET 尝试之前指示 OPTIONS 请求。我目前对 S3 的 CORS 配置的了解(请注意,我从未使用过 S3 并且对此一无所知)是您允许带有 Authorization 标头的 GET 请求。我没有看到您允许 OPTIONS 请求,并且您应该回答“Access-Control-Allow-Origin:*”以及 Method 和 Custom 标头。 【参考方案1】:可能是预检 OPTIONS 请求正在通过授权过程。有什么方法可以禁用 OPTIONS 请求的授权(当然,如果您使用的是授权)?
【讨论】:
嘿,Rory,老实说,我真的不需要授权,现在构建 xml 配置的方式只是我尝试克服 CORS 错误的 20 种不同方式之一。我也尝试过使用/不使用身份验证,但没有运气。以上是关于Amazon S3 - 不存在“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章
从 Amazon AWS s3 存储桶错误获取 Html5:请求的资源上不存在“Access-Control-Allow-Origin”标头