Ajax是一種異步的前后端數(shù)據(jù)交互的技術(shù)禾酱,它可以在不刷新瀏覽器的情況下科侈,向服務(wù)器端發(fā)送http請(qǐng)求和少量數(shù)據(jù),服務(wù)器端接收數(shù)據(jù)辅辩,對(duì)數(shù)據(jù)進(jìn)行一系列的操作难礼,查詢數(shù)據(jù)庫(kù)驗(yàn)證或者直接處理數(shù)據(jù)等,將處理結(jié)果返回給客戶端玫锋。
理解網(wǎng)絡(luò)世界的數(shù)據(jù)交換
一開(kāi)始學(xué)習(xí)Ajax的人蛾茉,一聽(tīng)到上面那么多陌生的概念性的名詞,馬上就迷糊了撩鹿,其實(shí)Ajax一點(diǎn)也不難臀稚,實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,但是需要一點(diǎn)貫通前后端的知識(shí)三痰,畢竟Ajax是前端后的交互技術(shù)吧寺。啥都別說(shuō),先看圖散劫,了解一下網(wǎng)絡(luò)世界是如何交換信息的稚机。
client 的中文意思是客戶端,指的一般是我們的瀏覽器获搏,而server 的中文意思是服務(wù)器赖条,指的是放置網(wǎng)站的服務(wù)器。我們平時(shí)上網(wǎng)打開(kāi)瀏覽器瀏覽網(wǎng)頁(yè)其實(shí)就是這么一個(gè)過(guò)程:
- 打開(kāi)瀏覽器常熙,在地址欄里輸入一個(gè)url地址
背后機(jī)理:url地址其實(shí)就是向服務(wù)器發(fā)送一個(gè)請(qǐng)求纬乍,比如 "http://www.baidu.com" ,就是向baidu.com域名下的www主機(jī)發(fā)送一個(gè)請(qǐng)求。| 域名和主機(jī)名的區(qū)別與聯(lián)系
拋出疑問(wèn):什么是請(qǐng)求裸卫?請(qǐng)求包括哪些內(nèi)容仿贬?
- 如果你有網(wǎng)絡(luò),并且你的網(wǎng)址沒(méi)有輸錯(cuò)的話墓贿,你可以得到一張百度首頁(yè)的網(wǎng)頁(yè)
背后機(jī)理:在遠(yuǎn)方[不知道有多遠(yuǎn)]的服務(wù)器一般是能夠接收到你的請(qǐng)求的茧泪,接收到請(qǐng)求之后,它會(huì)處理你這個(gè)請(qǐng)求聋袋,并且給你響應(yīng)队伟,返回你所請(qǐng)求的數(shù)據(jù)或文件。
比如你輸入百度的網(wǎng)址幽勒,那么這個(gè)網(wǎng)址就被嵌入到請(qǐng)求的內(nèi)容去了嗜侮,服務(wù)器接收到你請(qǐng)求的內(nèi)容后,對(duì)內(nèi)容進(jìn)行判斷,確定返回的數(shù)據(jù)或文件锈颗,這就是請(qǐng)求處理缠借,返回一個(gè)百度首頁(yè)的網(wǎng)頁(yè),這就是響應(yīng)并返回?cái)?shù)據(jù)宜猜。
拋出疑問(wèn):什么是響應(yīng)泼返?響應(yīng)包括哪些內(nèi)容?
總結(jié)
實(shí)際上姨拥,上面兩點(diǎn)很淺層地闡述了網(wǎng)絡(luò)世界的信息交換绅喉,我們?cè)跒g覽器打開(kāi)的一張張網(wǎng)頁(yè)都是通過(guò)這樣的方式得到的〗形冢客戶端發(fā)送請(qǐng)求柴罐,服務(wù)器接收到請(qǐng)求,作出響應(yīng)并返回?cái)?shù)據(jù)或文件憨奸。
理解HTTP協(xié)議
HTTP協(xié)議是指超文本傳輸協(xié)議革屠,用于從www服務(wù)器傳輸?shù)奖镜貫g覽器的傳輸方式,它規(guī)定了客戶端http請(qǐng)求和服務(wù)器端響應(yīng)的方式和交互規(guī)范排宰。
HTTP協(xié)議有以下特征:
- HTTP是一種無(wú)狀態(tài)的協(xié)議似芝,所謂無(wú)狀態(tài)就是不建立持久的連接,一開(kāi)始的時(shí)候板甘,客戶端和服務(wù)器的連接是關(guān)閉狀態(tài)党瓮,當(dāng)客戶端發(fā)送一個(gè)請(qǐng)求給服務(wù)器的時(shí)候,服務(wù)器和客戶端的連接被開(kāi)發(fā)盐类,響應(yīng)客戶端后寞奸,連接又被關(guān)閉了,等待客戶端下一次發(fā)送請(qǐng)求時(shí)再打開(kāi)在跳。
- HTTP是一種無(wú)記憶的協(xié)議枪萄,它根本不知道是哪個(gè)客戶端與服務(wù)器連接了,當(dāng)客戶端跟服務(wù)器連接后猫妙,同一個(gè)客戶端再次連接瓷翻,是沒(méi)有記憶的。當(dāng)然解決這個(gè)問(wèn)題可以使用cookie吐咳。
HTTP請(qǐng)求
一個(gè)完整的HTTP請(qǐng)求過(guò)程包含以下七個(gè)步驟:
- 瀏覽器打開(kāi)TCP連接逻悠,構(gòu)建Internet,這樣才能夠訪問(wèn)web互聯(lián)網(wǎng)上的資源韭脊,通俗地
- 客戶端發(fā)送http請(qǐng)求命令,如GET/sample/hello.jsp HTTP/1.1
- 客戶端發(fā)送http請(qǐng)求頭信息
- 服務(wù)器返回http響應(yīng)单旁,如狀態(tài)碼
- 服務(wù)器返回http響應(yīng)頭信息
- 服務(wù)器返回收響應(yīng)數(shù)據(jù)
- 服務(wù)器關(guān)閉TCP連接
http請(qǐng)求
一個(gè)http請(qǐng)求一般包括以下幾個(gè)部分
- 請(qǐng)求方式
請(qǐng)求方式有兩個(gè)沪羔,GET和POST - 請(qǐng)求頭
請(qǐng)求頭包括一些客戶端信息,請(qǐng)求內(nèi)容類(lèi)型等等 - 請(qǐng)求體
請(qǐng)求體放置請(qǐng)求發(fā)送到服務(wù)器的一些數(shù)據(jù)
GET請(qǐng)求和POST請(qǐng)求
1.GET請(qǐng)求使用url傳輸數(shù)據(jù),向服務(wù)器發(fā)送的數(shù)據(jù)直接顯示在url上蔫饰,不安全琅豆,所以GET請(qǐng)求一般用來(lái)查詢信息,請(qǐng)求資源篓吁,而且GET發(fā)送的數(shù)據(jù)大小也有限制茫因,主要是因?yàn)闉g覽器對(duì)url長(zhǎng)度有所限制
2.POST請(qǐng)求能夠模擬表單向服務(wù)器發(fā)送數(shù)據(jù),其發(fā)送的數(shù)據(jù)不會(huì)直接顯示在url上杖剪,所以用來(lái)發(fā)送一些個(gè)人賬號(hào)密碼的數(shù)據(jù)冻押,修改數(shù)據(jù)庫(kù)信息,是十分的安全盛嘿,對(duì)于POST請(qǐng)求發(fā)送的數(shù)據(jù)大小洛巢,沒(méi)有限制。
http響應(yīng)
一個(gè)http響應(yīng)一般包括以下幾個(gè)部分
-
http響應(yīng)狀態(tài)碼
如200 ok 次兆,就表示服務(wù)器已經(jīng)成功接收請(qǐng)求
還有一個(gè)我們常常都會(huì)看到的狀態(tài)碼稿茉,就是404,表示所請(qǐng)求的資源不存在
- http響應(yīng)頭
響應(yīng)頭包括一些服務(wù)器的信息芥炭,返回內(nèi)容的信息 - http響應(yīng)體
響應(yīng)體放置服務(wù)器返回給客戶端的數(shù)據(jù)漓库。
查看http請(qǐng)求
那么如何在瀏覽器查看http請(qǐng)求呢?
其實(shí)也挺簡(jiǎn)單的园蝠,以chrome為例米苹。
- 打開(kāi)新標(biāo)簽頁(yè),然后按F12調(diào)出開(kāi)發(fā)者工具砰琢,工具面板切換到network
- 在地址欄輸入http://www.baidu.com ,一個(gè)回車(chē)蘸嘶,然后就瀏覽器就會(huì)把請(qǐng)求的文件下載到本地
3.隨便點(diǎn)擊一個(gè)Name,就能看到關(guān)于這個(gè)文件的請(qǐng)求頭信息和響應(yīng)頭信息
總結(jié)
以上就是HTTP協(xié)議的基本知識(shí)陪汽,可以了解到HTTP請(qǐng)求的完整過(guò)程训唱,http請(qǐng)求和http響應(yīng)是怎么樣的,由哪些部分組成挚冤,GET請(qǐng)求方式和POST請(qǐng)求方式的區(qū)別况增,如何查看這些請(qǐng)求和響應(yīng)信息等,為我們使用學(xué)習(xí)AJax作了一個(gè)穩(wěn)固的鋪墊
——2015年2月24日23時(shí)40分