XMLHttpRequest
XMLHttpRequest.withCredentials 属性是一个布尔值,它指示了是否该使用类似 cookie、Authorization 标头或者 TLS 客户端证书等凭据进行跨站点访问控制(Acess-Control)请求。设置 withCredentials 对同源请求是无效的。
此外,这个标志还用于指示何时在响应中忽略 cookie。默认值是 false。除非在发送 XMLHttpRequest 请求之前,将 withCredentials 设置为 true,否则来自不同域的 XMLHttpRequest 响应无法为自己的域设置 cookie 值。而通过设置 withCredentials 为 true 获得第三方 cookie,仍将遵循同源策略,因此请求的脚本无法通过 document.cookie 或者响应标头访问。
Fetch
fetch 不会发送跨域 cookie,除非你使用了 credentials 的初始化选项。(自 2018 年 8 月以后,默认的 credentials 政策变更为 same-origin。Firefox 也在 61.0b13 版本中进行了修改)
fetch 函数接受一个可选的第二个参数,该参数是一个配置对象,其中可以包含一些选项来自定义请求。其中一个选项就是 credentials,它用于设置请求的凭证模式。credentials 可以有以下几个值:
'same-origin':仅在请求目标与当前页面具有相同来源(域名、协议和端口)时发送凭证。'include':始终发送凭证,即使跨域请求也会发送凭证。'omit':从不发送凭证,无论是同源请求还是跨域请求。