IMG标签来源AWS S3失败-CORB



我想在AWS bucket上托管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-chromeand-safari-cors-on-images(,但我不知道如何应用它。此外,这篇文章针对的是cors,而不是CORB(我认为它更新?(。

事实证明@Brad是对的。虽然我已经将bucket实例化为公共的,但上传到bucket的个人图像仍然是私有的。

将bucket策略更改为这个策略成功了(感谢h3xed.com!(:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": "arn:aws:s3:::[bucket_name_here]/*",
"Principal": "*"
}
]
}

此处解释了Bucket策略编辑。

感谢所有贡献者!

这里有一篇关于CORB的很好的StackOverflow帖子。

具体来说,这里有一节我认为可能会有所帮助:

在大多数情况下,被阻止的响应不应影响网页的行为,并且可以安全地忽略CORB错误消息。例如,当被阻止的响应的主体已经为空时,或者当响应将被传递到无法处理它的上下文时(例如,诸如404错误页面的HTML文档被传递到<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错误时,我发现这个bucket很可能是在另一个区域创建的,即不是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>

相关内容

  • 没有找到相关文章

最新更新