Answers:
默认情况下,CORS在跨域请求中不包含cookie。这与其他跨域技术(例如JSON-P)不同。JSON-P始终在请求中包含cookie,这种行为可能导致称为跨站点请求伪造或CSRF 的漏洞。
为了减少CORS中CSRF漏洞的可能性,CORS要求服务器和客户端都承认可以在请求中包含cookie。这样做会使cookie成为主动决策,而不是在没有任何控制的情况下被动发生的事情。
客户代码必须将的withCredentials
属性设置XMLHttpRequest
为true
,以授予权限。
但是,仅此标头是不够的。服务器必须使用Access-Control-Allow-Credentials
标头进行响应。响应此标头true
意味着服务器允许cookie(或其他用户凭据)包含在跨域请求中。
如果您希望跨源凭据请求有效,则还需要确保浏览器不会阻止第三方cookie。
请注意,无论您发出的是同源请求还是跨域请求,都需要保护您的站点免受CSRF的影响(尤其是如果您的请求包含cookie)。
withCredentials
设置了cookie,则发送cookie ,但是当它接收到响应时(如果设置了withCredentials),则仅在响应具有Access的情况下才将结果传递/暴露给正在调用的javascript。 -Control-Allow-Credentials标头集。如果没有头,则不会公开响应,从而使响应无效。