CORS协议和凭据
当请求的凭据模式为“ include
”时,它对CORS协议的功能有影响,但不包括抓取中的凭据。
在过去,XMLHttpRequest
可以将请求的凭据模式设置为“ include
”:
var client = new XMLHttpRequest()
client.open(“GET”,“./”)
client.withCredentials = true
/ * ... * /
现在fetch("./", { credentials:"include" }).then(/* … */)
就够了
甲请求的凭证模式是不是在服务器上可观察到的必然; 只有当凭证用于存在请求可以将它凭借的可观察到的证书被包括。请注意,即使如此,CORS-preflight请求也不包括凭据。
因此,服务器开发人员需要决定是否可以共享具有凭据的响应“污点” 。而且还需要决定是否请求迫使一个CORS-预检要求可以包括凭证。一般来说,分享答复和允许具有凭证的请求是相当不安全的,并且必须非常小心以避免混淆的副作用问题。
为了分享回应凭据时,` Access-Control-Allow-Origin
`和` Access-Control-Allow-Credentials
` 头是很重要的。下表用于说明请求的各种合法和非法组合https://rabbit.invalid/
:
类似地,当请求的凭据模式不是“ ” 时,` Access-Control-Expose-Headers
`,` Access-Control-Allow-Methods
`和` Access-Control-Allow-Headers
`响应头只能使用` *
`作为值。include