Http请求withCredentials这是什么以及为什么使用它?

时间:2014-12-10 17:16:32

标签: javascript angularjs http

我遇到了CORS的节点和角度问题,并添加了这个选项,真正解决了我的问题。 但我没有找到信息是什么,它在做什么? 请有人解释一下吗?

2 个答案:

答案 0 :(得分:20)

简答:

withCredentials()会使您的浏览器在您的XHR请求中包含Cookie和身份验证标头。如果您的服务依赖于任何cookie(包括会话cookie),它将仅适用于此选项集。

更长的解释:

当您向其他原始服务器发出Ajax请求时,浏览器可能会向服务器发送OPTIONS运行前请求以发现端点的CORS策略(对于非GET请求)。

由于请求可能是由恶意脚本触发的,为避免自动将身份验证信息泄露给远程服务器,浏览器应用以下规则:

对于GET请求,请在服务器请求中包含cookie和身份验证信息:

  • 如果使用withCredentials选项调用XHR客户端,则将其设置为true
  • 如果服务器回复不包含CORS标头访问控制允许凭证:true,则在将对象返回给Javascript之前放弃响应

对于非GET请求,仅包括cookie和身份验证信息:

  • 如果在XHR对象上将withCredentials设置为true
  • 并且服务器已在飞行前选项中包含CORS标头访问控制允许凭证:true

答案 1 :(得分:0)

来自Axios documentation的简短答案

withCredentials指示是否应使用凭据发出跨站点访问控制请求

凭据是cookie,授权标头或TLS客户端证书Reference

withCredentials的默认值为false