1.前后端通信原理:服務(wù)器和客戶端的數(shù)據(jù)交換
2.什么是AJAX?
1)AJAX = 異步JavaScript + XML(json);
2)通過(guò)后臺(tái)與服務(wù)器進(jìn)行的少量數(shù)據(jù)交換,AJAX可以使網(wǎng)頁(yè)實(shí)現(xiàn)異步更新。這意味著可以在不加載整個(gè)網(wǎng)頁(yè)的情況下,對(duì)頁(yè)面的某部分進(jìn)行更新。
3)傳統(tǒng)的網(wǎng)頁(yè)(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁(yè)面。
4)有很多使用 AJAX 的應(yīng)用程序案例:新浪微博、Google 地圖、開(kāi)心網(wǎng)等等。
3.使用AJAX請(qǐng)求數(shù)據(jù)
AJAX創(chuàng)建步驟
1)創(chuàng)建請(qǐng)求對(duì)象
var xhr = new XMLHttpRequest();
2)配置請(qǐng)求
xhr.open('GET','data.json?user = hello&pwd = world',true);
3)發(fā)送請(qǐng)求
xhr.send(null);//null顯示的告訴不需要參數(shù),提高代碼的健壯性
4)監(jiān)聽(tīng)請(qǐng)求狀態(tài)
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){ //獲取服務(wù)器返回的值
console.log(xhr.responseText);
}
}
注:處理瀏覽器兼容問(wèn)題
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
如果window下定義了XMLHttpRequest方法,返回方法的內(nèi)容(‘字符串’隱式轉(zhuǎn)換為true),否則返回undefined,隱式轉(zhuǎn)換為false;
注1://在open方法中配置請(qǐng)求對(duì)象:
第一個(gè)參數(shù):請(qǐng)求方法:GET/POST
第二個(gè)參數(shù):請(qǐng)求接口路徑:有絕對(duì)路徑和相對(duì)路徑兩種
第三個(gè)參數(shù):是否發(fā)起異步請(qǐng)求,默認(rèn)是true(異步),可改為false;
//第二個(gè)參數(shù)情況取決于第一個(gè)參數(shù),如果是GET請(qǐng)求,請(qǐng)求的接口需要參數(shù),則把參數(shù)字符串拼接到接口后,使用?連接;
//如果第二個(gè)參數(shù)是POST請(qǐng)求,請(qǐng)求的接口需要參數(shù),就把參數(shù)字符串當(dāng)做send()方法的參數(shù)傳遞給服務(wù)器(如果參數(shù)中有中文,需要用
encodeURI進(jìn)行編碼);
注2:監(jiān)聽(tīng)readystatechange事件(每次readystate屬性值發(fā)生改變都會(huì)
觸發(fā)這個(gè)事件)
//只有在服務(wù)器處理完畢請(qǐng)求,且處理成功時(shí)才可以獲取服務(wù)器返回的數(shù)據(jù)
//當(dāng)xhr.readyState值是4時(shí),代表服務(wù)器請(qǐng)求出路完畢
ready state取值情況:0:請(qǐng)求未初始化
1:服務(wù)器連接已建立
2:請(qǐng)求已接收
3:請(qǐng)求處理中
4:請(qǐng)求已完成,且響應(yīng)已就緒
//當(dāng)xhr.status值是200-300或者304時(shí),表示服務(wù)器成功把數(shù)據(jù)返回下來(lái)。一般情況下為200
ststues屬性取值情況:200:請(qǐng)求成功
404:未找到頁(yè)面
500:服務(wù)器錯(cuò)誤
//如果傳輸?shù)臄?shù)據(jù)格式是json格式,則需要從responseText屬性中獲取值
//如果服務(wù)器傳輸?shù)臄?shù)據(jù)格式是xml格式,則需要從responseXML中取值
4.三次握手
? 所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個(gè)TCP連接時(shí),需要客戶端和服務(wù)端總共發(fā)送3個(gè)包以確認(rèn)連接的建立。在socket編程中,這一過(guò)程由客戶端執(zhí)行connect來(lái)觸發(fā),整個(gè)流程如下圖所示:

TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接,如圖1所示。
(1)第一次握手:Client將標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值seq=J,并將該數(shù)據(jù)包發(fā)送給Server,Client進(jìn)入SYN_SENT狀態(tài),等待Server確認(rèn)。
(2)第二次握手:Server收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道Client請(qǐng)求建立連接,Server將標(biāo)志位SYN和ACK都置為1,ack=J+1,隨機(jī)產(chǎn)生一個(gè)值seq=K,并將該數(shù)據(jù)包發(fā)送給Client以確認(rèn)連接請(qǐng)求,Server進(jìn)入SYN_RCVD狀態(tài)。
(3)第三次握手:Client收到確認(rèn)后,檢查ack是否為J+1,ACK是否為1,如果正確則將標(biāo)志位ACK置為1,ack=K+1,并將該數(shù)據(jù)包發(fā)送給Server,Server檢查ack是否為K+1,ACK是否為1,如果正確則連接建立成功,Client和Server進(jìn)入ESTABLISHED狀態(tài),完成三次握手,隨后Client與Server之間可以開(kāi)始傳輸數(shù)據(jù)了
(注:以下為小全同學(xué)整理)
網(wǎng)頁(yè)錯(cuò)誤編號(hào)及對(duì)應(yīng)的錯(cuò)誤
400 無(wú)法解析此請(qǐng)求。
401.1 未經(jīng)授權(quán):訪問(wèn)由于憑據(jù)無(wú)效被拒絕。
401.2 未經(jīng)授權(quán): 訪問(wèn)由于服務(wù)器配置傾向使用替代身份驗(yàn)證方法而被拒
絕。
401.3 未經(jīng)授權(quán):訪問(wèn)由于 ACL 對(duì)所請(qǐng)求資源的設(shè)置被拒絕。
401.4 未經(jīng)授權(quán):Web 服務(wù)器上安裝的篩選器授權(quán)失敗。
401.5 未經(jīng)授權(quán):ISAPI/CGI 應(yīng)用程序授權(quán)失敗。
401.7 未經(jīng)授權(quán):由于 Web 服務(wù)器上的 URL 授權(quán)策略而拒絕訪問(wèn)。
403 禁止訪問(wèn):訪問(wèn)被拒絕。
403.1 禁止訪問(wèn):執(zhí)行訪問(wèn)被拒絕。
403.2 禁止訪問(wèn):讀取訪問(wèn)被拒絕。
403.3 禁止訪問(wèn):寫(xiě)入訪問(wèn)被拒絕。
403.4 禁止訪問(wèn):需要使用 SSL 查看該資源。
403.5 禁止訪問(wèn):需要使用 SSL 128 查看該資源。
403.6 禁止訪問(wèn):客戶端的 IP 地址被拒絕。
403.7 禁止訪問(wèn):需要 SSL 客戶端證書(shū)。
403.8 禁止訪問(wèn):客戶端的 DNS 名稱被拒絕。
403.9 禁止訪問(wèn):太多客戶端試圖連接到 Web 服務(wù)器。
403.10 禁止訪問(wèn):Web 服務(wù)器配置為拒絕執(zhí)行訪問(wèn)。
403.11 禁止訪問(wèn):密碼已更改。
403.12 禁止訪問(wèn):服務(wù)器證書(shū)映射器拒絕了客戶端證書(shū)訪問(wèn)。
403.13 禁止訪問(wèn):客戶端證書(shū)已在 Web 服務(wù)器上吊銷。
403.14 禁止訪問(wèn):在 Web 服務(wù)器上已拒絕目錄列表。
403.15 禁止訪問(wèn):Web 服務(wù)器已超過(guò)客戶端訪問(wèn)許可證限制。
403.16 禁止訪問(wèn):客戶端證書(shū)格式錯(cuò)誤或未被 Web 服務(wù)器信任。
403.17 禁止訪問(wèn):客戶端證書(shū)已經(jīng)到期或者尚未生效。
403.18 禁止訪問(wèn):無(wú)法在當(dāng)前應(yīng)用程序池中執(zhí)行請(qǐng)求的 URL。
403.19 禁止訪問(wèn):無(wú)法在該應(yīng)用程序池中為客戶端執(zhí)行 CGI。
403.20 禁止訪問(wèn):Passport 登錄失敗。
404 找不到文件或目錄。
404.1 文件或目錄未找到:網(wǎng)站無(wú)法在所請(qǐng)求的端口訪問(wèn)。
注意 404.1 錯(cuò)誤只會(huì)出現(xiàn)在具有多個(gè) IP 地址的計(jì)算機(jī)上。如果在特定
IP 地址/端口組合上收到客戶端請(qǐng)求,而且沒(méi)有將 IP 地址配置為在該特
定的端口上偵聽(tīng),則 IIS 返回 404.1 HTTP 錯(cuò)誤。例如,如果一臺(tái)計(jì)算
機(jī)有兩個(gè) IP 地址,而只將其中一個(gè) IP 地址配置為在端口 80 上偵聽(tīng),
則另一個(gè) IP 地址從端口 80 收到的任何請(qǐng)求都將導(dǎo)致 IIS 返回 404.1
錯(cuò)誤。只應(yīng)在此服務(wù)級(jí)別設(shè)置該錯(cuò)誤,因?yàn)橹挥挟?dāng)服務(wù)器上使用多個(gè) IP
地址時(shí)才會(huì)將它返回給客戶端。
404.2 文件或目錄無(wú)法找到:鎖定策略禁止該請(qǐng)求。
404.3 文件或目錄無(wú)法找到:MIME 映射策略禁止該請(qǐng)求。
405 用于訪問(wèn)該頁(yè)的 HTTP 動(dòng)作未被許可。
406 客戶端瀏覽器不接受所請(qǐng)求頁(yè)面的 MIME 類型。
407 Web 服務(wù)器需要初始的代理驗(yàn)證。
410 文件已刪除。
412 客戶端設(shè)置的前提條件在 Web 服務(wù)器上評(píng)估時(shí)失敗。
414 請(qǐng)求 URL 太大,因此在 Web 服務(wù)器上不接受該 URL。
500 服務(wù)器內(nèi)部錯(cuò)誤。
500.11 服務(wù)器錯(cuò)誤:Web 服務(wù)器上的應(yīng)用程序正在關(guān)閉。
500.12 服務(wù)器錯(cuò)誤:Web 服務(wù)器上的應(yīng)用程序正在重新啟動(dòng)。
500.13 服務(wù)器錯(cuò)誤:Web 服務(wù)器太忙。
500.14 服務(wù)器錯(cuò)誤:服務(wù)器上的無(wú)效應(yīng)用程序配置。
500.15 服務(wù)器錯(cuò)誤:不允許直接請(qǐng)求 GLOBAL.ASA。
500.16 服務(wù)器錯(cuò)誤:UNC 授權(quán)憑據(jù)不正確。
500.17 服務(wù)器錯(cuò)誤:URL 授權(quán)存儲(chǔ)無(wú)法找到。
500.18 服務(wù)器錯(cuò)誤:URL 授權(quán)存儲(chǔ)無(wú)法打開(kāi)。
500.19 服務(wù)器錯(cuò)誤:該文件的數(shù)據(jù)在配置數(shù)據(jù)庫(kù)中配置不正確。
500.20 服務(wù)器錯(cuò)誤:URL 授權(quán)域無(wú)法找到。
500 100 內(nèi)部服務(wù)器錯(cuò)誤:ASP 錯(cuò)誤。
501 標(biāo)題值指定的配置沒(méi)有執(zhí)行。
502 Web 服務(wù)器作為網(wǎng)關(guān)或代理服務(wù)器時(shí)收到無(wú)效的響應(yīng)。