XMLHttpRequest 基礎(chǔ)

官方文檔
超好用的API接口平臺(tái)分享膝迎,含免費(fèi)API
JSON API免費(fèi)接口
XMLHttpRequest 對(duì)象用于在后臺(tái)與服務(wù)器交換數(shù)據(jù)。
XMLHttpRequest 對(duì)象是開發(fā)者的夢(mèng)想使鹅,因?yàn)槟軌颍?/p>

  • 在不重新加載頁(yè)面的情況下更新網(wǎng)頁(yè)
  • 在頁(yè)面已加載后從服務(wù)器請(qǐng)求數(shù)據(jù)
  • 在頁(yè)面已加載后從服務(wù)器接收數(shù)據(jù)
  • 在后臺(tái)向服務(wù)器發(fā)送數(shù)據(jù)

1. 創(chuàng)建 XMLHttpRequest 對(duì)象

var xhr = new xmlHttpRequest();

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對(duì)象:

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

IE 5.0 版本開始以 ActiveX 組件形式支持 XMLHttpRequest涌穆,IE 7.0 版本開始標(biāo)準(zhǔn)化 XMLHttpRequest敛苇。不過(guò)所有瀏覽器實(shí)現(xiàn)的 XMLHttpRequest 對(duì)象都提供相同的接口和用法梳码。
可以把定義 XMLHttpRequest 對(duì)象進(jìn)行封裝
下面示例使用工廠模式把定義 XMLHttpRequest 對(duì)象進(jìn)行封裝斜筐,這樣只需要調(diào)用 creatXHR() 方法就可以返回一個(gè) XMLHttpRequest 對(duì)象冰啃。

function createXHR(){
  var  XHR = [//兼容不同瀏覽器和版本得創(chuàng)建函數(shù)數(shù)組
    function() {return new XMLHttpRequest ()},
    function(){ return new ActiveXObject("Msxml2.XMLHTTP")},
    function(){ return new ActiveXObject("Msxml3.XMLHTTPP")},
    function(){ return new ActiveXObject("Microsoft.XMLHTTP")}
  ];
  var xhr = null;  
  for(let index = 0;index < XHR.length;index++){
    try{
      xhr = XHR[index]()
    }catch(err){
      console.error(err)
      continue
    }
    break;
  }
  return xhr
}

在上面代碼中邓夕,首先定義一個(gè)數(shù)組,收集各種創(chuàng)建 XMLHttpRequest 對(duì)象的函數(shù)阎毅。第 1 個(gè)函數(shù)是標(biāo)準(zhǔn)用法焚刚,其他函數(shù)主要針對(duì) IE 瀏覽器的不同版本嘗試創(chuàng)建 ActiveX 對(duì)象。然后設(shè)置變量 xhr 為 null扇调,表示為空對(duì)象矿咕。接著遍歷工廠內(nèi)所有函數(shù)并嘗試執(zhí)行它們,為了避免發(fā)生異常,把所有調(diào)用函數(shù)放在 try 中執(zhí)行碳柱,如果發(fā)生錯(cuò)誤捡絮,則在 catch 中捕獲異常并執(zhí)行 continue 命令,返回繼續(xù)執(zhí)行莲镣,避免拋出異常福稳。如果創(chuàng)建成功,則中止循環(huán)瑞侮,返回 XMLHttpRequest 對(duì)象的圆。

2. 建立連接

在 JavaScript 中,使用 XMLHttpRequest 對(duì)象的 open() 方法可以建立一個(gè) HTTP 請(qǐng)求半火。用法如下:

xhr.open(method,url,async,username,password)

xhr.open(method, url, async, username, password);

其中 xhr 表示 XMLHttpRequest 對(duì)象越妈,open() 方法包含 5 個(gè)參數(shù),說(shuō)明如下:

  • method :要使用的 HTTP 方法钮糖,比如 GET梅掠、POST、PUT店归、DELETE瓤檐、等,大小寫不敏感娱节。對(duì)于非 HTTP(S) URL 被忽略挠蛉。

  • url: 一個(gè) DOMString 表示要向其發(fā)送請(qǐng)求的 URL。

  • async:一個(gè)可選的布爾參數(shù)肄满,表示是否異步執(zhí)行操作谴古,默認(rèn)為 true。如果值為 false稠歉,send() 方法直到收到答復(fù)前不會(huì)返回,當(dāng)狀態(tài)改變時(shí)會(huì)立即調(diào)用 onreadystatechange 屬性指定的回調(diào)函數(shù)掰担。如果 true,已完成事務(wù)的通知可供事件監(jiān)聽器使用怒炸。如果 multipart 屬性為 true 則這個(gè)必須為 true带饱,否則將引發(fā)異常。
    備注:主線程上的同步請(qǐng)求很容易破壞用戶體驗(yàn)阅羹,應(yīng)該避免勺疼;實(shí)際上,許多瀏覽器已完全棄用主線程上的同步 XHR 支持捏鱼。在 Worker 中允許同步請(qǐng)求

  • username:可選參數(shù)执庐,如果服務(wù)器需要驗(yàn)證,該參數(shù)指定用戶名导梆,如果未指定轨淌,當(dāng)服務(wù)器需要驗(yàn)證時(shí)迂烁,會(huì)彈出驗(yàn)證窗口。

  • password:可選參數(shù)递鹉,驗(yàn)證信息中的密碼部分盟步,如果用戶名為空,則該值將被忽略躏结。

3. 建立連接后址芯,可以使用 send() 方法發(fā)送請(qǐng)求。用法如下:

xhr.send(body);//選填

XMLHttpRequest.send() 方法用于發(fā)送 HTTP 請(qǐng)求窜觉。如果是異步請(qǐng)求(默認(rèn)為異步請(qǐng)求)谷炸,則此方法會(huì)在請(qǐng)求發(fā)送后立即返回;如果是同步請(qǐng)求禀挫,則此方法直到響應(yīng)到達(dá)后才會(huì)返回旬陡。XMLHttpRequest.send() 方法接受一個(gè)可選的參數(shù),其作為請(qǐng)求主體语婴;如果請(qǐng)求方法是 GET 或者 HEAD描孟,則應(yīng)將請(qǐng)求主體設(shè)置為 null。
如果沒(méi)有使用 setRequestHeader() 方法設(shè)置 Accept 頭部信息砰左,則會(huì)發(fā)送帶有 "* / *"Accept 頭部匿醒。
如果 body 沒(méi)有指定值,則默認(rèn)值為 null缠导。
發(fā)送請(qǐng)求后廉羔,可以使用 XMLHttpRequest 對(duì)象的 responseBody、responseStream僻造、responseText 或 responseXML 屬等待接收響應(yīng)數(shù)據(jù)
在 XHR 請(qǐng)求中要發(fā)送的數(shù)據(jù)體憋他。可以是:

  • 可以為 Document, 在這種情況下髓削,它在發(fā)送之前被序列化竹挡。
    以下是一些可能的解決方案:
    解決方案1:使用XMLSerializer
var serializer = new XMLSerializer();
var xml = serializer.serializeToString(document);
var xhr = new XMLHttpRequest();
xhr.open("POST", "some/url", true);
xhr.send(xml);

解決方案2:使用document.documentElement.outerHTML

var xhr = new XMLHttpRequest();
xhr.open("POST", "some/url", true);
xhr.send(document.documentElement.outerHTML);

解決方案3:使用document.documentElement.innerHTML

var xhr = new XMLHttpRequest();
xhr.open("POST", "some/url", true);
xhr.send(document.documentElement.innerHTML);

如果發(fā)送的數(shù)據(jù)是 Document 對(duì)象立膛,需要在發(fā)送之前將其序列化揪罕。當(dāng)發(fā)送一個(gè) Document 對(duì)象時(shí),F(xiàn)irefox 3 之前的版本都是使用 UTF-8 編碼發(fā)送請(qǐng)求的宝泵;FireFox 3 則使用由 body.xmlEncoding 指定的編碼格式正確的發(fā)送文檔好啰,但如果未指定編碼格式,則使用 UTF-8 編碼格式發(fā)送鲁猩。

如果是一個(gè) nsIInputStream 接口坎怪,它必須與 nsIUploadChannel 的 setUploadStream() 方法兼容。在這種情況下廓握,將 Content-Length 的頭部添加到請(qǐng)求中搅窿,它的值則使用 nsIInputStream 接口的 available() 方法獲取。任何報(bào)頭包括在數(shù)據(jù)流頂部的都會(huì)被當(dāng)做報(bào)文主體隙券。所以男应,應(yīng)該在發(fā)送請(qǐng)求即調(diào)用 send() 方法之前使用setRequestHeader() 方法設(shè)置 Content-Type 頭部來(lái)指定數(shù)據(jù)流的 MIME 類型。

發(fā)送二進(jìn)制內(nèi)容的最佳方法(如上傳文件)是使用一個(gè)與 send() 方法結(jié)合的 ArrayBufferView 或者 Blobs

XMLHttpRequest

  1. 實(shí)例方法
  • abort
    可冒泡:No;可取消:No;事件處理程序?qū)傩?onabort
    當(dāng)一個(gè)請(qǐng)求終止時(shí) abort 事件被觸發(fā)娱仔,比如程序執(zhí)行 XMLHttpRequest.abort()沐飘。
let xhr = new XMLHttpRequest();
let url = 'https://api.uomg.com/api/rand.qinghua';
xhr.onabort = function (params) {
    console.log('請(qǐng)求被abort()取消了');
})
xhr.open('POST', url, true);
xhr.send('format=json');
setTimeout(() => {
    xhr.abort()
}, 10)
  • error
    可冒泡:No;可取消:No;事件處理程序?qū)傩?onerror
    當(dāng)請(qǐng)求遇到錯(cuò)誤時(shí),將觸發(fā)error 事件牲迫。
let xhr = new XMLHttpRequest();
let url = 'https://somewhere.org/i-dont-exist';
xhr.onerror = function (params) {
    console.log('請(qǐng)求遇到錯(cuò)誤了');
}
xhr.open('GET', url);
xhr.send()
  • load
    可冒泡:No;可取消:No;事件處理程序?qū)傩?onload
    當(dāng)一個(gè)XMLHttpRequest請(qǐng)求完成的時(shí)候會(huì)觸發(fā)load 事件耐朴。
let xhr = new XMLHttpRequest();
let url = 'https://api.uomg.com/api/rand.qinghua';
xhr.onload= function (params) {
    console.log('請(qǐng)求完成了');
}
xhr.open('GET', url);
xhr.send()
  • loadstart
    當(dāng)程序開始加載時(shí),loadstart 事件將被觸發(fā)盹憎。這個(gè)事件可以被 XMLHttpRequest 調(diào)用筛峭,也適用于 <img><video> 元素。
let xhr = new XMLHttpRequest();
let url = 'https://api.uomg.com/api/rand.qinghua';
xhr.onloadstart = function (params) {
    console.log('request loadstart');
}
xhr.onload= function (params) {
    console.log('request onload');
}
xhr.open('GET', url);
xhr.send()
  • loadend
    loadend 事件總是在一個(gè)資源的加載進(jìn)度停止之后被觸發(fā) (例如陪每,在已經(jīng)觸發(fā)“error”影晓,“abort”或“l(fā)oad”事件之后)。這適用于 XMLHttpRequest 調(diào)用檩禾,以及 <img><video> 之類元素的內(nèi)容挂签。
let xhr = new XMLHttpRequest();
let url = 'https://api.uomg.com/api/rand.qinghua';
xhr.onloadend = function (params) {
    console.log('request loadend ');//再執(zhí)行l(wèi)oadend 
}
xhr.onload= function (params) {
    console.log('request onload');//先執(zhí)行onload
}
xhr.open('GET', url);
xhr.send()
  • progress
    可冒泡:No;可取消:No;事件處理程序?qū)傩?onprogress
    progress 事件會(huì)在請(qǐng)求接收到數(shù)據(jù)的時(shí)候被周期性觸發(fā)。
    XMLHttpRequest對(duì)象在進(jìn)行文件上傳或下載時(shí)盼产,可以利用其progress事件來(lái)跟蹤文件的上傳或下載進(jìn)度饵婆。
var xhr = new XMLHttpRequest();
var file = document.querySelector('input[type="file"]').files[0];
 
var formData = new FormData();
formData.append('file', file);
 
xhr.open('POST', '/upload', true);
 
xhr.upload.onprogress = function(e) {
  if (e.lengthComputable) {
    var percentComplete = (e.loaded / e.total) * 100;
    console.log(percentComplete.toFixed(2) + '%');
  }
};
 
xhr.send(formData);
  • onreadystatechange
    只要 readyState 屬性發(fā)生變化,就會(huì)調(diào)用相應(yīng)的處理函數(shù)戏售。這個(gè)回調(diào)函數(shù)會(huì)被用戶線程所調(diào)用啦辐。XMLHttpRequest.onreadystatechange 會(huì)在 XMLHttpRequestreadyState 屬性發(fā)生改變時(shí)觸發(fā) readystatechange 事件的時(shí)候被調(diào)用。
    警告:這個(gè)方法不該用于同步的 requests 對(duì)象蜈项,并且不能在內(nèi)部 (C++) 代碼中使用芹关。
    當(dāng)一個(gè) XMLHttpRequest 請(qǐng)求abort方法取消時(shí),其對(duì)應(yīng)的 readystatechange 事件不會(huì)被觸發(fā)紧卒。
var xhr = new XMLHttpRequest(),
  method = "GET",
  url = "https://developer.mozilla.org/";

xhr.open(method, url, true);
xhr.onreadystatechange = function () {
  if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
    console.log(xhr.responseText);
  }
};
xhr.send();
  • timeout
    可冒泡:No;可取消:No;事件處理程序?qū)傩?ontimeout
    當(dāng)進(jìn)度由于預(yù)定時(shí)間到期而終止時(shí)侥衬,會(huì)觸發(fā) timeout 事件。
let xhr = new XMLHttpRequest();
let url = 'https://api.uomg.com/api/rand.qinghua';
xhr.ontimeout= function (params) {
    console.error("Timeout!!");
}
xhr.open('GET', url);
xhr.send()
  1. 實(shí)例屬性
  • status
    只讀屬性 XMLHttpRequest.status 返回了 XMLHttpRequest 響應(yīng)中的數(shù)字狀態(tài)碼跑芳。status 的值是一個(gè)無(wú)符號(hào)短整型轴总。在請(qǐng)求完成前,status 的值為 0博个。值得注意的是怀樟,如果 XMLHttpRequest 出錯(cuò),瀏覽器返回的 status 也為 0盆佣。status 碼是標(biāo)準(zhǔn)的 HTTP status codes往堡。舉個(gè)例子械荷,status 200 代表一個(gè)成功的請(qǐng)求。如果服務(wù)器響應(yīng)中沒(méi)有明確指定 status 碼虑灰,XMLHttpRequest.status 將會(huì)默認(rèn)為 200吨瞎。
    HTTP 響應(yīng)狀態(tài)碼用來(lái)表明特定HTTP請(qǐng)求是否成功完成。 響應(yīng)被歸為以下五大類:
  1. 信息響應(yīng) (100199)
  2. 成功響應(yīng) (200299)
  3. 重定向消息 (300399)
  4. 客戶端錯(cuò)誤響應(yīng) (400499)
  5. 服務(wù)端錯(cuò)誤響應(yīng) (500599)
  • statusText
    只讀屬性 XMLHttpRequest.statusText 返回了XMLHttpRequest 請(qǐng)求中由服務(wù)器返回的一個(gè)DOMString類型的文本信息穆咐,這則信息中也包含了響應(yīng)的數(shù)字狀態(tài)碼颤诀。不同于使用一個(gè)數(shù)字來(lái)指示的狀態(tài)碼XMLHTTPRequest.status,這個(gè)屬性包含了返回狀態(tài)對(duì)應(yīng)的文本信息对湃,例如"OK"或是"Not Found"崖叫。如果請(qǐng)求的狀態(tài)readyState的值為"UNSENT"或者"OPENED",則這個(gè)屬性的值將會(huì)是一個(gè)空字符串拍柒。如果服務(wù)器未明確指定一個(gè)狀態(tài)文本信息心傀,則statusText的值將會(huì)被自動(dòng)賦值為"OK"。
  • readyState
    XMLHttpRequest.readyState 屬性返回一個(gè) XMLHttpRequest 代理當(dāng)前所處的狀態(tài)斤儿。一個(gè) XHR 代理總是處于下列狀態(tài)中的一個(gè):
    狀態(tài) 描述
    0 UNSENT 代理被創(chuàng)建剧包,但尚未調(diào)用 open() 方法。
    1 OPENED open() 方法已經(jīng)被調(diào)用往果。
    2 HEADERS_RECEIVED send() 方法已經(jīng)被調(diào)用疆液,并且頭部和狀態(tài)已經(jīng)可獲得。
    3 LOADING 下載中陕贮;responseText 屬性已經(jīng)包含部分?jǐn)?shù)據(jù)堕油。
    4 DONE 下載操作已完成。
  • responseType
    responseType 是一個(gè)枚舉字符串值肮之,用于指定響應(yīng)中包含的數(shù)據(jù)類型掉缺。
    它還允許作者更改響應(yīng)類型。如果將 responseType 的值設(shè)置為空字符串戈擒,則會(huì)使用 text 作為默認(rèn)值眶明。

    Global_Objects/String類型的值,指定響應(yīng)包含的數(shù)據(jù)類型筐高。它可以采用以下值:
    描述
    '' 空的 responseType 字符串與默認(rèn)類型 "text" 相同搜囱。
    arraybuffer response 是一個(gè)包含二進(jìn)制數(shù)據(jù)的 JavaScript ArrayBuffer
    blob response是一個(gè)包含二進(jìn)制數(shù)據(jù)的 Blob對(duì)象。
    document response是一個(gè)HTML Document或XML XMLDocument柑土,根據(jù)接收到的數(shù)據(jù)的 MIME 類型而定蜀肘。請(qǐng)參閱`XMLHttpRequest 中的 HTML,了解有關(guān)使用 XHR 獲取 HTML 內(nèi)容的更多信息稽屏。
    json response是通過(guò)將接收到的數(shù)據(jù)內(nèi)容解析為JSON而創(chuàng)建的 JavaScript 對(duì)象扮宠。
    text response是DOMString 對(duì)象中的文本。
    ms-stream response是是流式下載的一部分狐榔;此響應(yīng)類型僅允許用于下載請(qǐng)求坛增,并且僅受 Internet Explorer 支持
  • response
    XMLHttpRequest的 response 屬性返回響應(yīng)的正文获雕。返回的類型為 ArrayBufferBlob轿偎、Document典鸡、JavaScript Object或字符串中的一個(gè)被廓。這取決于請(qǐng)求的responseType屬性坏晦。

    一個(gè)對(duì)象,其類型取決于responseType 的值嫁乘。你可以嘗試設(shè)置 responseType 的值昆婿,以便請(qǐng)求特定的類型的數(shù)據(jù)。 responseType 要在調(diào)用open()初始化請(qǐng)求之后以及在調(diào)用send()發(fā)送請(qǐng)求到服務(wù)器之前設(shè)置蜓斧。
    如果請(qǐng)求尚未完成或未成功仓蛆,則取值是 null。例外的挎春,讀取文本數(shù)據(jù)時(shí)如果將 responseType 的值設(shè)置成 "text" 或空字符串("")而請(qǐng)求狀態(tài)還是 LOADING readyState (3)時(shí)看疙,response 包含到目前為止該請(qǐng)求已經(jīng)取得的內(nèi)容。
  • responseText
    在一個(gè)請(qǐng)求被發(fā)送后直奋,從服務(wù)器端返回文本芒澜。

    DOMStringXMLHttpRequest 返回的純文本的值笆包。當(dāng) DOMStringnull 時(shí),表示請(qǐng)求失敗了。當(dāng)DOMString 為 "" 時(shí)涂邀,表示這個(gè)請(qǐng)求還沒(méi)有被 send()
    當(dāng)處理一個(gè)異步 request 的時(shí)候,盡管當(dāng)前請(qǐng)求并沒(méi)有結(jié)束烛谊,responseText 的返回值是當(dāng)前從后端收到的內(nèi)容镀层。
    當(dāng)請(qǐng)求狀態(tài) readyState變?yōu)?XMLHttpRequest.DONE (4),且status值為 200("OK")時(shí)船逮,responseText 是全部后端的返回?cái)?shù)據(jù)
  • responseURL
    只讀屬性 XMLHttpRequest.responseURL 返回響應(yīng)的序列化 URL顾腊,如果 URL 為空則返回空字符串。如果 URL 有錨點(diǎn)挖胃,則位于 URL # 后面的內(nèi)容會(huì)被刪除杂靶。如果 URL 有重定向,responseURL 的值會(huì)是經(jīng)過(guò)多次重定向后的最終 URL冠骄。
  • responseXML
    是一個(gè)只讀值伪煤,它返回一個(gè)包含請(qǐng)求檢索的 HTML 或 XML 的Document,如果請(qǐng)求未成功凛辣,尚未發(fā)送抱既,或者檢索的數(shù)據(jù)無(wú)法正確解析為 XML 或 HTML,則為 null扁誓。默認(rèn)是當(dāng)作“text / xml”來(lái)解析防泵。當(dāng) responseType設(shè)置為“document”并且請(qǐng)求已異步執(zhí)行時(shí)蚀之,響應(yīng)將被當(dāng)作“text / html”來(lái)解析。responseXML 對(duì)于任何其他類型的數(shù)據(jù)以及 data: URLs為 null捷泞。
    備注: responseXML 在這個(gè)屬性的歷史堪稱神器足删,它可以同時(shí)在 HTML 和 XML 中工作
    如果服務(wù)器沒(méi)有明確指出 Content-Type 頭是 "text/xml" 還是 "application/xml", 你可以使用XMLHttpRequest.overrideMimeType()強(qiáng)制 XMLHttpRequest 解析為 XML。
  • timeout
    是一個(gè)無(wú)符號(hào)長(zhǎng)整型數(shù)锁右,代表著一個(gè)請(qǐng)求在被自動(dòng)終止前所消耗的毫秒數(shù)失受。默認(rèn)值為 0,意味著沒(méi)有超時(shí)咏瑟。超時(shí)并不應(yīng)該用在一個(gè) document environment 中的同步 XMLHttpRequests 請(qǐng)求中拂到,否則將會(huì)拋出一個(gè) InvalidAccessError 類型的錯(cuò)誤。當(dāng)超時(shí)發(fā)生码泞,timeout事件將會(huì)被觸發(fā)兄旬。
  • upload
    **XMLHttpRequest.upload **屬性返回一個(gè)XMLHttpRequestUpload對(duì)象,用來(lái)表示上傳的進(jìn)度余寥。這個(gè)對(duì)象是不透明的领铐,但是作為一個(gè)XMLHttpRequestEventTarget,可以通過(guò)對(duì)其綁定事件來(lái)追蹤它的進(jìn)度宋舷。
事件 相應(yīng)屬性的信息類型
onloadstart 獲取開始
onprogress 數(shù)據(jù)傳輸進(jìn)行中
onabort 獲取操作終止
onerror 獲取失敗
onload 獲取成功
ontimeout 獲取操作在用戶規(guī)定的時(shí)間內(nèi)未完成
onloadend 獲取完成(不論成功與否)
  • channel
    創(chuàng)建請(qǐng)求的時(shí)候绪撵,XMLHttpRequest.channel 是一個(gè)被對(duì)象使用的 nsIChannel。如果管道(channel)還沒(méi)被創(chuàng)建的話肥缔,它的值是 null莲兢。在一個(gè) multi-part 請(qǐng)求案例中,它是初始化的管道续膳,不是 multi-part 請(qǐng)求中的不同部分改艇。
    需要權(quán)限提升。
  • mozAnon
    XMLHttpRequest.mozAnon 是布爾類型坟岔。如果這個(gè)變量為真谒兄,則這次請(qǐng)求將不攜帶 Cookies 或頭部認(rèn)證信息來(lái)發(fā)送。
  • mozBackgroundRequest
    備注:(1)Web 內(nèi)容無(wú)法使用此方法社付。它需要提升權(quán)限才能訪問(wèn)承疲。(2)該屬性必須在調(diào)用 open() 之前設(shè)置。
    XMLHttpRequest.mozBackgroundRequest 是一個(gè)布爾對(duì)象鸥咖,表示 object 是否為后臺(tái)的服務(wù)請(qǐng)求燕鸽。如果為 true,則不會(huì)將任何加載組與請(qǐng)求關(guān)聯(lián)啼辣,并且不會(huì)向用戶顯示安全對(duì)話框啊研。
    請(qǐng)求失敗時(shí)通常會(huì)顯示安全對(duì)話框(例如身份驗(yàn)證或錯(cuò)誤證書通知)。
  • mozSystem
    mozSystem 是一個(gè)布爾值。如果它被設(shè)置為 true党远,那么在請(qǐng)求時(shí)就不會(huì)強(qiáng)制要求執(zhí)行同源策略(Same Origin Policy)削解。
  • withCredentials
    XMLHttpRequest.withCredentials 屬性是一個(gè)布爾值,它指示了是否該使用類似 cookie沟娱、Authorization 標(biāo)頭或者 TLS 客戶端證書等憑據(jù)進(jìn)行跨站點(diǎn)訪問(wèn)控制(Access-Control)請(qǐng)求氛驮。設(shè)置 withCredentials 對(duì)同源請(qǐng)求是無(wú)效的。
    備注: 永遠(yuǎn)不會(huì)影響到同源請(qǐng)求济似。
    備注: 不同域下的 XmlHttpRequest 響應(yīng)矫废,不論其 Access-Control- 標(biāo)頭設(shè)置什么值,都無(wú)法為它自身站點(diǎn)設(shè)置 Cookie 值碱屁,除非它在請(qǐng)求之前將 withCredentials 設(shè)為 true磷脯。
    此外蛾找,這個(gè)標(biāo)志還用于指示何時(shí)在響應(yīng)中忽略 cookie娩脾。默認(rèn)值是 false。除非在發(fā)送 XMLHttpRequest 請(qǐng)求之前打毛,將 withCredentials 設(shè)置為 true柿赊,否則來(lái)自不同域的 XMLHttpRequest 響應(yīng)無(wú)法為自己的域設(shè)置 cookie 值。而通過(guò)設(shè)置 withCredentials 為 true 獲得第三方 cookie幻枉,仍將遵循同源策略碰声,因此請(qǐng)求的腳本無(wú)法通過(guò) document.cookie 或者響應(yīng)標(biāo)頭訪問(wèn)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熬甫,一起剝皮案震驚了整個(gè)濱河市胰挑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椿肩,老刑警劉巖瞻颂,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異郑象,居然都是意外死亡贡这,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門厂榛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盖矫,“玉大人,你說(shuō)我怎么就攤上這事击奶”菜” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵柜砾,是天一觀的道長(zhǎng)湃望。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么喜爷? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任冗疮,我火速辦了婚禮,結(jié)果婚禮上檩帐,老公的妹妹穿的比我還像新娘术幔。我一直安慰自己,他們只是感情好湃密,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布诅挑。 她就那樣靜靜地躺著,像睡著了一般泛源。 火紅的嫁衣襯著肌膚如雪拔妥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天达箍,我揣著相機(jī)與錄音没龙,去河邊找鬼。 笑死缎玫,一個(gè)胖子當(dāng)著我的面吹牛硬纤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赃磨,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼筝家,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了邻辉?” 一聲冷哼從身側(cè)響起溪王,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎值骇,沒(méi)想到半個(gè)月后莹菱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雷客,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年芒珠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搅裙。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡皱卓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出部逮,到底是詐尸還是另有隱情娜汁,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布兄朋,位于F島的核電站掐禁,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜傅事,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一缕允、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹭越,春花似錦障本、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至买置,卻和暖如春粪糙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忿项。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蓉冈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倦卖。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓洒擦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親怕膛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容