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