被 CORS 策略阻止:从 Amazon S3 调用图像时没有“Access-Control-Allow-Origin”标头

Posted

技术标签:

【中文标题】被 CORS 策略阻止:从 Amazon S3 调用图像时没有“Access-Control-Allow-Origin”标头【英文标题】:Blocked by CORS policy: No 'Access-Control-Allow-Origin' header when calling Image from Amazon S3 【发布时间】:2021-01-22 11:21:50 【问题描述】:

我正在尝试将网页导出为 PDF,并且该页面包含来自我们 S3 服务器的图像。当 PDF 被导出时,图像不会出现在 PDF 中。

当我检查浏览器控制台时,我看到以下错误。

Access to image at 'https://skreem2-dev.s3-us-west-2.amazonaws.com/influencers/large-virat-kohli-2retxr.jpg' from origin 'http://localhost:3001' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已将 S3 存储桶 CORS 政策更新为以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>http://localhost/</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
    <AllowedOrigin>http://localhost:3001/</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>

知道如何将图像呈现为 PDF 并绕过此错误吗?

【问题讨论】:

确保请求头包含Origin @jellycsc 这应该在反应中完成吗?有参考吗? 您能发布加载此图像的反应代码吗? 【参考方案1】:

我也遇到过同样的问题。我已将属性 crossorigin="anonymous" 添加到 html 页面中的图像标记中,它解决了我从 s3 存储桶中提取图像时的问题。

【讨论】:

以上是关于被 CORS 策略阻止:从 Amazon S3 调用图像时没有“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章

被 CORS 策略阻止 - 来自 Django 应用程序的 S3 存储桶访问

被 CORS 策略阻止的 React-S3

Amazon S3,无法设置 CORS 策略

如何在 Amazon S3 中配置 CORS 策略以从 React App 上传文档?

Amazon S3 存储桶策略阻止用户代理

在 angular2 中使用 http 访问 Amazon s3