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