【发布时间】:2019-11-25 10:57:40
【问题描述】:
我们让用户能够将视频上传到我们的 Amazon S3 存储桶。它已配备“加速” 选项并使用我们 JS 的多部分上传。但是,我们注意到一些非常令人不安的事情:我们有数千个来自互联网速度很快的国家/地区的成功上传。
但是,几乎所有连接速度较慢的用户(他们都恰好来自互联网不以速度闻名的地方)无法上传。一旦他们开始上传,他们就会在控制台上收到几十个这样的错误,上传就会卡住并失败。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://our-secret-bucket-xxxxxx.s3-accelerate.amazonaws.com/tyoeu/Abbey%…BAYmLRf4.YqtrWLwkD9uc5wGp0.rpyIV6xqDHxHqNaEsaxQTMAHs3g8DXdL3. (Reason: CORS request did not succeed).
此存储桶的 CORS 设置如下:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>43200</MaxAgeSeconds>
<ExposeHeader>ETag</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我们手动帮助上传失败的用户,要求他们上传到 Dropbox 并与我们分享链接 - 但这只是另一个证明有问题 - 如果他们可以通过缓慢的连接上传到 Dropbox,为什么不能他们上传到 AWS/S3 吗?这已经折磨我们的灵魂很长一段时间了,我们无法理解出了什么问题。
当然,我们不是地球上唯一一家允许来自世界各地的人们上传大文件的公司。为什么我们会因连接速度慢的用户而失败?
【问题讨论】:
-
如果您还没有,我建议您使用 AWS 开票。
-
@Greg 谢谢。也会试试的。
-
@JasonGenX,您是否尝试通过设置较差的网络配置文件来模拟 chrome 上的行为?你能以这种方式重现这个问题吗?如果您执行此操作,您会在网络选项卡中看到什么?
-
尽量不要使用chrome。 IE 11 或 Edge 或 Firefox。
-
您是否尝试为您的存储桶启用日志?如果您看到连接和数据从这些地方流向您的存储桶,那么您可能会丢弃 CORS 问题。我读过浏览器有时会混淆 CORS 问题。
标签: amazon-web-services amazon-s3