jQuery.ajax xhrFields:{withCredentials:true}是做什么的?

时间:2018-08-24 19:18:01

标签: javascript jquery

我知道这是一个新问题,但是我对学习Ajax并不陌生。我正在阅读一些代码,并碰到了这行

var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.vimeo.com/channels/180097");
xhr.setRequestHeader("Authorization", "Bearer <insert_access_token>");
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("Postman-Token", "5f32ac6c-2c86-4fbc-a7cb-43c8b01f7ea7");

xhr.send(data);

我能够遵循其余的代码;但是,这部分有点混乱。您是否使用它来覆盖凭据?

documentation中,它表示以下内容:

  

xhrFields   引用

     

类型:PlainObject

     

要在本机XHR上设置的fieldName-fieldValue对的对象   宾语。例如,您可以使用它将withCredentials设置为true   跨域请求。

我有点明白我在说什么。但是,我不确定它指的是哪种跨域请求。

再次抱歉问这个菜鸟问题。请不要拒绝我的问题D:

祝你有美好的一天:)!

1 个答案:

答案 0 :(得分:1)

根据Mozilla文档:

  

XMLHttpRequest.withCredentials属性是一个布尔值,   指示是否应进行跨站点访问控制请求   使用Cookie,授权标头或TLS等凭证进行   客户证书。设置withCredentials不会影响   同一站点的请求

根据CORS规范,不会发送cookie,但是当您设置XMLHttpRequest.withCredentials = true时,cookie将被发送到在其他域中运行的服务器。通常,如果服务器API位于其他域中,则不会发送cookie。

为相同的原始请求设置此属性无效。但是,为了使其正常工作,服务器还必须通过将Access-Control-Allow-Credentials响应标头设置为true来启用凭据。

请参考Mozilla文档: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials