Access-Control-Allow-Credentials标头到底具有什么作用?

时间:2014-07-10 22:25:22

标签: http-headers cors

我试图了解如何使用CORS,并对Access-Control-Allow-Credentials标题的作用感到困惑。

The documentation

  

指示是否可以公开对请求的响应   当凭证标志为真时。

但我不明白应对的反应是什么?#34;装置

任何人都可以解释这个标题被设置为true(与设置为true的凭证标志一起)实际上是什么吗?

1 个答案:

答案 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)。