我正在尝试从s3存储桶加载资源(字体)。 Firefox和IE上的字体需要在响应中返回Access-Control-Allow-Origin标头。不幸的是,Chrome似乎没有发送“Origin”请求标头。由于它没有发送Origin请求头,因此S3的CORS策略没有返回所需的Access-Control-Allow-Origin头。
以下是从Chrome检查器面板截取的示例请求:
为什么Requset标题中没有“Origin”标题?
发出此字体请求的页面位于https://proximate.com,并在Heroku上托管。
答案 0 :(得分: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/CORS和https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html。