IMG 标签采购 AWS S3 失败 - CORB?
Posted
技术标签:
【中文标题】IMG 标签采购 AWS S3 失败 - CORB?【英文标题】:IMG tag sourcing AWS S3 fails - CORB? 【发布时间】:2020-06-10 11:03:33 【问题描述】:我想在 AWS 存储桶上托管 Web 项目的图像,然后在呈现 html 时动态拉取它们。这给我带来的麻烦比我预期的要多。
这是有问题的标签:
<img src="https://s3.us-east-2.amazonaws.com/ibidnyc/Summer Smith/VERBAL/subsections/Summer-Smith-VERBAL-subtopic-POETRY-fig.jpg" alt="">
当我这样做时,我收到一个跨域读取阻止 (CORB) 错误(在检查器中;我正在运行 Chrome) - 显然,Chrome 在某些情况下会阻止链接到其他网站上的 img 源?粗略的搜索把我带到了这里 (zyst.io/how-to-fix-aws-s3-chrome-and-safari-cors-on-images),但我不知道如何应用它。此外,这篇文章针对的是 CORS,而不是 CORB(我认为它是更新的?)。
【问题讨论】:
对于初学者来说,这是您存储桶的错误 URL。接下来,它是无效的......你不能在里面有空格。请改用%20
。最后,该资源要么不存在,要么公众无法访问。
我有类似的问题,但我使用 Storj 作为我的对象存储。我分享了我的 标签的链接,但它不起作用。我刚收到 CORB 问题。
【参考方案1】:
Here's a good *** post relating to CORB.
具体来说,这是我认为可能有帮助的部分:
在大多数情况下,被阻止的响应不应影响网页的行为,并且可以安全地忽略 CORB 错误消息。例如,当被阻止的响应的主体已经为空时,或者当响应将被传递到无法处理它的上下文(例如,HTML 文档,如 404 错误页面)时,可能会出现警告被传递到
<img>
标签)。
https://www.chromium.org/Home/chromium-security/corb-for-developers
尝试清除缓存并确保从该 AWS 链接返回的数据确实是图像而不是其他类型的数据。当我在浏览器中打开该 AWS 链接时,我得到一个 XML 错误页面,而不是图像:
<Error>
<Code>PermanentRedirect</Code>
<Message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<Endpoint>s3.amazonaws.com</Endpoint>
<Bucket>ibidnyc</Bucket>
<RequestId>FF65E772274735DF</RequestId>
<HostId>
VW+SBil/6NVWG5lx0F1XmWSDJLTjwaTHbBPoVQQlDNV+71NY4eDQLJraGtM+pBSyjas3ByFKIis=
</HostId>
</Error>
在研究那个 XML 错误时,我发现这个存储桶很可能是在不同的区域创建的,即不是 us-east-2
。这是我唯一一次看到这个端点错误。
美国标准是 us-east-1
将您的 URL 更改为 us-east-1 后,我现在收到 AccessDenied 错误,因此我假设已找到该图像并且您将能够访问它。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>19E4B33430F54214</RequestId>
<HostId>
MF/m6yUhslgB3aB3ddoqnKwRAeABQq17wkaIqX09hwrvaZ+jPm8oIEVAY9HQpG5MShOp1Jf/HIg=
</HostId>
</Error>
【讨论】:
【参考方案2】:事实证明@Brad 是对的。虽然我已将存储桶实例化为公开的,但上传到该存储桶的单个图像仍然是私有的。
将存储桶策略更改为这个就可以了(感谢h3xed.com!):
"Version": "2012-10-17",
"Statement": [
"Sid": "PublicReadGetObject",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": "arn:aws:s3:::[bucket_name_here]/*",
"Principal": "*"
]
Bucket policy editing explained here.
感谢所有贡献者!
【讨论】:
以上是关于IMG 标签采购 AWS S3 失败 - CORB?的主要内容,如果未能解决你的问题,请参考以下文章
从 AWS Redshift 到 S3 的 AWS Glue ETL 作业失败
AWS - Cloudfront、S3 和 W3TotalCache 的 CORS 标头失败