更新時(shí)間:2019年12月19日16時(shí)43分 來源:傳智播客 瀏覽次數(shù):
HTTP工作原理
HTTP協(xié)議定義了web客戶端如何從web服務(wù)器請(qǐng)求web頁(yè)面,以及服務(wù)器如何將web頁(yè)面?zhèn)鬟f給客戶端。HTTP協(xié)議使用請(qǐng)求/響應(yīng)模型。客戶端從服務(wù)器請(qǐng)求消息。請(qǐng)求消息包括方法、URL、協(xié)議版本、請(qǐng)求頭和請(qǐng)求數(shù)據(jù)。服務(wù)器用狀態(tài)行響應(yīng),狀態(tài)行包括協(xié)議版本、成功或錯(cuò)誤代碼、服務(wù)器信息、響應(yīng)頭和響應(yīng)數(shù)據(jù)。
HTTP請(qǐng)求/響應(yīng)步驟
客戶端連接到Web服務(wù)器->發(fā)送HTTP請(qǐng)求->服務(wù)器接受請(qǐng)求,返回HTTP響應(yīng)->釋放連接TCP連接->客戶端瀏覽器解析HTML內(nèi)容。
1、客戶端連接到Web服務(wù)器
HTTP客戶端(通常是瀏覽器)建立到web服務(wù)器HTTP端口(默認(rèn)為80)的TCP套接字連接。例如,http://www.itheima.com
2、送HTTP請(qǐng)求
客戶端通過TCP套接字向web服務(wù)器發(fā)送文本請(qǐng)求消息。請(qǐng)求消息由四部分組成:請(qǐng)求行、請(qǐng)求頭、空行和請(qǐng)求數(shù)據(jù)。
3.服務(wù)器接受請(qǐng)求并返回一個(gè)HTTP響應(yīng)
web服務(wù)器解析請(qǐng)求并定位請(qǐng)求的資源。服務(wù)器將資源的副本寫入TCP套接字,客戶端讀取它。響應(yīng)包括狀態(tài)行、響應(yīng)頭、空行和響應(yīng)數(shù)據(jù)。
4、釋放TCP連接
如果連接模式關(guān)閉,服務(wù)器將主動(dòng)關(guān)閉TCP連接,客戶端被動(dòng)關(guān)閉連接并釋放TCP連接。如果連接模式保持活動(dòng)狀態(tài),則連接將保持一段時(shí)間,在此期間可以繼續(xù)接收請(qǐng)求。
5、客戶端瀏覽器解析HTML內(nèi)容
客戶端瀏覽器首先分析狀態(tài)行,以查看指示請(qǐng)求是否成功的狀態(tài)代碼。然后分析每個(gè)響應(yīng)頭,這表示以下是HTML文檔和文檔字符集中的字節(jié)數(shù)。客戶端瀏覽器讀取響應(yīng)數(shù)據(jù)HTML,根據(jù)HTML語法對(duì)其進(jìn)行格式化,并將其顯示在瀏覽器窗口中。推薦了解傳智播客軟件測(cè)試3.0課程。
什么是冪等和非冪等
在了解HTTP請(qǐng)求方式之前,我們先來了解一下“冪等”和“非冪等”。
冪等性:對(duì)于相同的行為,如果無論多少次,最終結(jié)果都是相同的,則該行為稱為冪等。
非理想性:對(duì)于相同行為,如果最終結(jié)果與執(zhí)行次數(shù)相關(guān),每次結(jié)果不同,則稱為非冪等。
HTTP的請(qǐng)求方式有哪些?
GET:從服務(wù)器獲取資源(一項(xiàng)或多項(xiàng))。發(fā)送請(qǐng)求來獲得服務(wù)器上的資源,請(qǐng)求體中不會(huì)包含請(qǐng)求數(shù)據(jù),請(qǐng)求數(shù)據(jù)放在協(xié)議頭中。另外get支持快取、緩存、可保留書簽等。冪等
POST:在服務(wù)器新建一個(gè)資源。和get一樣很常見,向服務(wù)器提交資源讓服務(wù)器處理,比如提交表單、上傳文件等,可能導(dǎo)致建立新的資源或者對(duì)原有資源的修改。提交的資源放在請(qǐng)求體中。不支持快取。非冪等
PUT:在服務(wù)器更新資源(客戶端提供改變后的完整資源)。和post類似,html表單不支持,發(fā)送資源與服務(wù)器,并存儲(chǔ)在服務(wù)器指定位置,要求客戶端事先知道該位置;比如post是在一個(gè)集合上(/province),而put是具體某一個(gè)資源上(/province/123)。所以put是安全的,無論請(qǐng)求多少次,都是在123上更改,而post可能請(qǐng)求幾次創(chuàng)建了幾次資源。冪等。
DELETE:從服務(wù)器刪除資源。請(qǐng)求服務(wù)器刪除某資源。和put都具有破壞性,可能被防火墻攔截。如果是https協(xié)議,則無需擔(dān)心。冪等
CONNECT:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。就是把服務(wù)器作為跳板,去訪問其他網(wǎng)頁(yè)然后把數(shù)據(jù)返回回來,連接成功后,就可以正常的get、post了。
OPTIONS:獲取http服務(wù)器支持的http請(qǐng)求方法,允許客戶端查看服務(wù)器的性能,比如ajax跨域時(shí)的預(yù)檢等。
TRACE:顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。一般禁用,防止被惡意攻擊或盜取信息。
HEAD:向服務(wù)器索與GET請(qǐng)求相一致的響應(yīng),只不過響應(yīng)體將不會(huì)被返回。這一方法可以再不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)小消息頭中的元信息。
猜你喜歡:
如何編寫完整的測(cè)試用例?3分鐘學(xué)會(huì)!
2019-12-09MySQL怎么查看已經(jīng)創(chuàng)建的數(shù)據(jù)表?
2019-11-27MySQL類型之字符串和二進(jìn)制類型詳細(xì)介紹[軟件測(cè)試培訓(xùn)]
2019-11-21MySQL類型之日期和時(shí)間類型詳細(xì)介紹
2019-11-21MySQL數(shù)據(jù)類型之浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型介紹
2019-11-21MySQL數(shù)據(jù)類型之整數(shù)類型介紹[軟件測(cè)試培訓(xùn)]
2019-11-21北京校區(qū)