Access-Control-Allow-Credentials头做了什么?
我想了解如何使用CORS,并且对Access-Control-Allow-Credentials
头做了什么感到困惑。
文件说
指示凭证标志为true时是否可以显示对请求的响应。
但我不明白什么是“暴露”的意思。
任何人都可以解释这个头被设置为true(与设置为true的凭据标志一起)实际上是什么?
默认情况下,CORS不包括跨源请求的cookie。 这与JSON-P等其他跨源技术不同。 JSON-P总是包含请求的cookie,这种行为可能导致一类称为跨站点请求伪造 (CSRF)的漏洞。
为了减lessCORS中CSRF漏洞的可能性,CORS要求服务器和客户端都确认在请求中包含cookie是正确的。 这样做会使Cookie成为一个积极的决定,而不是被动地发生而没有任何控制的事情。
客户端代码必须将XMLHttpRequest
的withCredentials
属性设置为true
才能授予权限。
但是,这个标题是不够的。 服务器必须使用Access-Control-Allow-Credentials
标题进行响应。 响应此标头为true
意味着服务器允许将Cookie(或其他用户凭据)包含在跨源请求中。
您还需要确保您的浏览器不阻止第三方cookie,如果您想要跨源证书请求工作。
请注意,无论您是在制作同源请求还是跨域请求,都需要保护您的网站免受CSRF攻击(尤其是在您的请求中包含Cookie的情况下)。