我在Cloudfront签名Cookie实施中遇到以下错误
从源访问“ https://a.xyz.com/test.html”处的XMLHttpRequest “ https://b.xyz.com”已被CORS政策禁止:否 请求中存在“ Access-Control-Allow-Origin”标头 资源。
我正在从b.xyz.com(域2)访问a.xyz.com(域1)上的文件。 在限制查看者访问(使用签名Cookie)进行云前端(域1)分发之前,此方法运行良好。
我的具有域1资产的存储桶的S3 CORS配置是
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我尝试在Cloudfront行为设置中设置以下白名单标题
Access-Control-Request-Headers
Access-Control-Request-Method
Origin
但是我仍然遇到上述错误。
注意:如果我在新标签页中打开文件https://a.xyz.com/test.html,则该文件工作正常,即已成功创建签名的cookie。
我该如何解决?
答案 0 :(得分:0)
要使CORS与Cookie一起使用,您需要使用Access-Control-Allow-Credentials
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
还Access-Control-Allow-Origin
不能为*
,并且XHR必须使用withCredentials
来触发
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials