我试图了解如何使用CORS,并对Access-Control-Allow-Credentials
标题的作用感到困惑。
指示是否可以公开对请求的响应 当凭证标志为真时。
但我不明白应对的反应是什么?#34;装置
任何人都可以解释这个标题被设置为true(与设置为true的凭证标志一起)实际上是什么吗?
答案 0 :(得分:221)
默认情况下,CORS不包含跨源请求的Cookie。这与其他跨源技术(如JSON-P)不同。 JSON-P始终包含请求的cookie,这种行为可能导致一类称为cross-site request forgery或CSRF的漏洞。
为了减少CORS中CSRF漏洞的可能性,CORS要求服务器和客户端都承认可以在请求中包含cookie。这样做可以使cookie成为一个积极的决定,而不是在没有任何控制的情况下被动地发生的事情。
客户端代码必须将withCredentials
上的XMLHttpRequest
属性设置为true
才能获得许可。
然而,单靠此标题是不够的。服务器必须使用Access-Control-Allow-Credentials
标头进行响应。使用此标头响应true
意味着服务器允许cookie(或其他用户凭据)包含在跨源请求中。
如果您希望跨源凭证请求有效,您还需要确保your browser isn't blocking third-party cookies。
请注意,无论您是在进行同源请求还是跨域请求,都需要保护您的站点免受CSRF的侵害(特别是如果您的请求包含cookie)。