withCredentials 属性

西山雨

什么是 credentials

credentials,即用户凭证,是指 cookie、HTTP身份验证和TLS客户端证书。需要注意的是,它不涉及代理身份验证或源标头。

XMLHttpRequest 的 withCredentials 属性

  • 默认值为false。在获取同域资源时设置 withCredentials 没有影响。
  • true:在跨域请求时,会携带用户凭证
  • false:在跨域请求时,不会携带用户凭证;返回的 response 里也会忽略 cookie

规范文档中描述,它在特定情况下会报错

throws an InvalidStateError exception if state is not unsent or opened, or if the send() flag is set.

这里的 state 是指 XMLHttpRequest 的 readyState 属性,我们来简单回顾一下相关内容。

状态 状态码 说明
unsent 0 初始化 XMLHttpRequest 对象之后
opened 1 open() 方法成功执行之后
headers received 2 所有的重定向都找到了,所有的 response 的响应头都收到了
loading 3 response's body 正在接收
done 4 数据接收完成或者出错了

send() flag 是在调用 send() 方法之后设置的。当 state 为 done 时,销毁 send() flag

IE 10

原来,在IE10环境下,withCredentials 属性必须在open方法成功执行之后,send执行之前设置才可以,否则会报错。如果open方法执行失败了,设置 withCredentials 属性依然会报错。相关演示如下图所示

图片描述

详情参看 XMLHttpRequest 文档 https://xhr.spec.whatwg.org/

阅读 7.3k

fighting

1.3k 声望
26 粉丝
0 条评论
你知道吗?

fighting

1.3k 声望
26 粉丝
宣传栏