12

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

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

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

在此处输入图像描述

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

4

1 回答 1

0

GET请求字体之前,Chrome 会发送一个OPTIONS字体资源的预检请求。Chrome 将在此预检请求中发送Origin标头。S3 的 CORS 策略将返回所需的Access-Control-Allow-Origin标头以响应此预检OPTIONS请求。
此后,Chrome 会为字体发出 GET 请求——您在屏幕截图中显示的请求。Chrome 现在不会Origin在此GET请求中发送标头。如屏幕截图所示,请求成功(状态码 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

于 2018-04-13T17:15:38.617 回答