我正在一个框架中实现CORS(跨域资源共享)。
我知道当使用Jquery的ajax(...)
并且withCredentials
属性为true
时,如果服务器必须响应这两个内容:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin:[THE_DOMAIN]
服务器不能用通配符响应:Access-Control-Allow-Origin:*
:那样是无法工作的!
我的问题:在服务器上如何知道已经使用了withCredentials: true
,从而不使用通配符呢?
我比较了使用withCredentials: false
和使用withCredentials: true
时发送的头,它们是相同的!
所以,如果我确实希望允许客户端请求凭据,这是否意味着我不能使用Access-Control-Allow-Origin:*
?
withCredentials
设置为true,则还应接收在源域上设置的任何cookie,我不确定这是否适用于初始请求还是仅在服务器响应Access-Control-Allow-Credentials: true
后(我可以想象两种情况都是正确的,尽管我认为后者最有可能)。至于通配符,我倾向于始终指定允许的域(从原始标头)。此答案可能有所帮助。 - Rogier SpiekerwithCredentials: true
进行查询但没有任何 cookie 时,通配符也会失败。我认为强制客户端在使用withCredentials: true
时发送 cookie 是不可取的...你不知道他代码的逻辑。所以我认为你不能真正依赖于 cookie 的存在。感谢您的帮助! - electrotypewithCredentials:true
时,Cookie会被设置。这种情况下,有一个Cookie的存在将表明withCredentials
为true
。 - Rogier Spieker