【问题标题】:Origin header missing from cross origin request to S3 on Chrome跨源请求到 Chrome 上的 S3 缺少源标头
【发布时间】:2013-05-23 18:13:51
【问题描述】:

我正在尝试从 s3 存储桶加载资产(字体)。 Firefox 和 IE 上的字体需要在响应中返回 Access-Control-Allow-Origin 标头。不幸的是,Chrome 似乎没有发送“Origin”请求标头。由于它没有发送 Origin 请求标头,因此 S3 的 CORS 策略没有返回所需的 Access-Control-Allow-Origin 标头。

以下是从 Chrome 检查器面板截取的示例请求:

为什么 Requset 标头中没有“Origin”标头?!

发出此字体请求的页面位于https://proximate.com,并托管在 Heroku 上。

【问题讨论】:

  • 您找到解决方案了吗?我遇到了完全相同的问题。

标签: google-chrome amazon-s3 request cors access-control


【解决方案1】:

在对字体发出 GET 请求之前,Chrome 会发送预检 OPTIONS 请求以获取字体资源。正是在这个预检请求中,Chrome 会发送 Origin 标头。 S3 的 CORS 策略将返回所需的 Access-Control-Allow-Origin 标头以响应此预检 OPTIONS 请求。
此后,Chrome 会为字体发出 GET 请求——您在屏幕截图中显示的请求。 Chrome 现在不会在这个 GET 请求中发送 Origin 标头。如屏幕截图所示,请求成功(状态码 200 OK)。另请注意响应中出现的 Amazon 标头(以 x-amz- 开头)和 Server: AmazonS3
您的网站https://proximate.com 似乎确实会收到来自 Amazon S3 的字体。不是这样吗?

更多详情请查看链接https://spring.io/understanding/CORShttps://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 2013-03-08
    • 2015-04-18
    • 2018-06-20
    • 2018-10-31
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多