【问题标题】:Lingering No 'Access-Control-Allow-Origin' error with S3S3 没有“Access-Control-Allow-Origin”错误
【发布时间】:2017-12-06 01:31:13
【问题描述】:

我在从 S3 加载资产时遇到了一个奇怪的问题。我有一个从 S3 提供的样式表,并且似乎加载没有问题,但我仍然在控制台中收到 No 'Access-Control-Allow-Origin' header is present on the requested resource. 错误。资产是公开的,这是我存储桶上的 CORS 配置

<CORSRule>
  <AllowedOrigin>MYDOMAINHERE</AllowedOrigin>
  <AllowedMethod>GET</AllowedMethod>
  <MaxAgeSeconds>3000</MaxAgeSeconds>
  <AllowedHeader>*</AllowedHeader>
</CORSRule>

同样,样式都在加载,一切似乎都很好,但我只是想弄清楚为什么它仍然会抛出该错误并希望尽可能消除它。谢谢!

【问题讨论】:

  • &lt;AllowedOrigin&gt; 的值必须以 http://https:// 开头。你有吗,它是否与你网站的操作模式(http/https)相匹配?
  • 是的,对不起,应该指定的。我有两个 &lt;AllowedOrigin&gt; 规范 - 一个用于 http,一个用于 https。 MYDOMAINHERE 只是一个占位符。
  • 这可能只是由于浏览器缓存了该样式表并继续从其缓存中提供它。因此,也许可以尝试在浏览器中强制重新加载样式表 URL,以让浏览器通过网络重新加载它,而不是从其缓存副本中重新加载。如果这不能解决它,我猜你也有可能在它们之间有一些网络缓存/代理仍然在提供一个陈旧的副本。但如果是这样,不知道如何建议解决这个问题……
  • 向我们展示捕获的请求和响应标头? S3 中的 CORS 处理存在问题,这可能有助于 @sideshowbarker 提出的建议。
  • @sideshowbarker michael-sqlbot 我认为这正是问题所在。该错误似乎在某些页面(如主页)上消失了,因此服务器一定是在缓存旧版本。我猜只是一个等待的游戏!如果你们中的任何一个想回答,我可以将其标记为正确!

标签: amazon-s3 cors


【解决方案1】:

问题中描述的行为很可能是由于浏览器缓存了资源并继续从其缓存中提供服务,或者服务器端的某些东西或中间网络代理/缓存仍在提供陈旧的副本。

如果缓存问题出在客户端,请尝试直接在浏览器中导航到资源的 URL,然后强制重新加载。

但如果问题出在网络端的缓存/代理上,则获取新副本可能会更加困难。在这些情况下,您可能只需要等待缓存过期。查看 ExpiresCache-Control 响应标头的值可以让您知道何时会发生这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 2016-02-13
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 2021-10-01
    • 2021-05-06
    相关资源
    最近更新 更多