当前位置: 首页 > 知识库问答 >
问题:

S3:请求的资源上不存在Access-Control-Allow-Origin头

微生阳平
2023-03-14

我在EU-West-1区域中有一个S3 bucket,我们称之为my-bucket

在那个桶中有一个图片,我们称之为some-file.jpg

如果我通过浏览器访问这两个URL,我就可以检索那个图片(桶中的所有对象都是公共的)(请记住,这些是示例,而不是现实生活中的URL):

https://my-bucket.s3.amazonaws.com/some-file.jpg

https://s3-eu-west-1.amazonaws.com/my-bucket/some-file.jpg

但是,我正在尝试获取有关该图片的一些信息,为此我使用了vibrant.js,它尝试检索该文件。

但是,当url为https://my-bucket.s3.amazonaws.com/some-file.jpg时,它会失败,出现以下CORS错误:

Access to Image at 'https://my-bucket.s3.amazonaws.com/some-file.jpg' from origin 'https://example.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://example.com' is therefore not allowed access

我已经确保桶的CORS策略接受所有来源:

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

我的猜测是https://s3-eu-west-1.amazonaws.com/my-bucket/some-file.jpg发送access-control-allow-origin而另一个不发送。我该怎么解决这个?

共有1个答案

蒲勇
2023-03-14

更新CORS头后是否清除了浏览器缓存

我遇到的问题是Chrome用头(不包含CORS数据)缓存图像,所以无论我尝试在AWS中更改什么,我都不会看到我的CORS头。

清除Chrome缓存并重新加载页面后,图像具有预期的CORS头

 类似资料:
  • 我需要发送数据通过从JavaScript到Python服务器。因为我在使用localhost,所以我需要使用CORS。我正在使用Flask框架及其模块。 作为JavaScript,我有以下几点: 和Python代码: 但是当我执行它时,我会得到这样的信息: XMLHttpRequest无法加载localhost:5000/signin.请求的资源上不存在访问控制允许起源标头。因此,不允许访问源'n

  • 使用ProceedingError:} 我的CORS配置如下所示,我尝试了几种方法,但没有成功。 有人知道哪里不对劲吗?我看了5-6个类似的帖子,但似乎没有人能够解决问题。

  • 我打关键斗篷apihttp://localhost:8080/auth/realms/**/协议/openid-connect/令牌与正确的凭据,它的工作正常,但与错误的凭据 当我添加跨域允许时,它会给我印前检查错误 任何人都可以帮我:)PS:使用CORS插件一切正常

  • 问题内容: 我是django的新手,并将其用作创建用户的应用程序的后端。在前端发布用户名的代码是: 在后端,与url相关的功能处理json,但我收到错误消息“请求的资源上没有’Access-Control-Allow-Origin’标头。 问题答案: 你的前端和后端位于不同的端口上,这意味着你的ajax请求受跨源安全性的约束。 你需要设置后端以接受来自不同来源(或只是不同端口号)的请求。

  • 问题内容: 我有一个在服务器上运行的API,并且有一个与之连接的前端客户端来检索数据。我对跨域问题进行了一些研究,并使其起作用。但是我不确定发生了什么变化。我现在在控制台中收到此错误: XMLHttpRequest无法加载https://api.mydomain/api/status。所请求的资源上没有“ Access-Control-Allow-Origin”标头。因此,不允许访问源“ http

  • 问题内容: 实际上,这不是 重复的 帖子,我知道在stackoverflow社区中多次问过的标题的一部分,我阅读了所有帖子和答案,但是我认为我使用的问题和技术是不同的。 首先,我应该提到的是我的后端应用程序,也是我的前端应用程序。 我读了一下,发现必须在App 上启用并放入 请求的标头,但是在调用api时仍然出现以下错误: 所请求的资源上没有“ Access-Control-Allow-Origi