我从两个不同的域名访问CloudFront。我配置了S3允许来自这两个域名的跨域请求。从mydomain1页面可以正确获取数据,然后从mydomain2页面会正确地发送请求:
> origin: https://mydomain2
CloudFront 响应如下:
< content-type: application/json
< content-length: 65
< date: Fri, 04 Dec 2020 22:45:50 GMT
< access-control-allow-origin: https://mydomain1
< access-control-allow-methods: GET, PUT
< access-control-allow-credentials: true
< accept-ranges: bytes
< server: AmazonS3
< x-cache: Hit from cloudfront
当然,浏览器阻止了此请求,因为allowed-origin与请求不符。
我最初以为我Origin Request Policy出错了,但实际上我正在使用Managed-CORS-S3Origin,它有正确的名称,我检查过了并且它说它正在传递Origin头到S3 origin —— 事实上,“origin”在内容分发业务中意味着与HTTP业务中完全不同的东西,这使得问题变得更加复杂。
但显然,Access-Control-Allow-Origin响应头的值被缓存了,原因不明。
来源 访问控制请求标头 访问控制请求方法
- Tyler