简短答案:
withCredentials()使您的浏览器在XHR请求中包含cookie和身份验证标头。如果您的服务依赖于任何cookie(包括会话cookie),则仅在使用此选项集的情况下才能使用。
更长的解释:
当您向其他原始服务器发出Ajax请求时,浏览器可能会向服务器发送OPTIONS飞行前请求以发现端点的CORS策略(对于非GET请求)。
由于请求可能是由恶意脚本触发的,因此为了避免将身份验证信息自动泄漏到远程服务器,浏览器将应用以下规则:
对于GET请求,在服务器请求中包括cookie和身份验证信息:
- 如果XHR客户端在
withCredentials
选项设置为true的情况下调用 - 并且如果服务器回复不包含CORS标头Access-Control-Allow-Credentials:true,则在将对象返回Java之前丢弃响应
对于非GET请求,仅包括cookie和身份验证信息:
withCredentials
在XHR对象上将if 设置为true- 并且服务器已包含CORS标头访问控制允许凭据:飞行前选项中为true



