HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議)是用于在網(wǎng)絡上傳輸數(shù)據(jù)的一種協(xié)議,對于網(wǎng)絡開發(fā)人員來說,理解這一協(xié)議是至關重要的。由于其廣泛的應用,除了在網(wǎng)頁應用傳輸數(shù)據(jù)之外,它還被應用于物聯(lián)網(wǎng)(IoT)中的數(shù)據(jù)和命令傳輸。
HTTP 協(xié)議的第一個版本只有一個方法,即 GET,用于從服務器請求頁面。服務器的響應總是一個 HTML 頁面。要了解 HTTP 協(xié)議最初的簡單設計,請參閱原始規(guī)范,該規(guī)范文檔僅有一頁。
從最初的 0.9 版本開始,HTTP 已經(jīng)發(fā)展了幾個版本。當前的版本是 1.1,并于 2014 年最后一次修訂。
工作原理
HTTP 作為互聯(lián)網(wǎng)協(xié)議之一,它是基于文本的命令和響應協(xié)議,使用客戶端-服務器通信模型。
客戶端發(fā)出請求,服務器做出響應。HTTP 協(xié)議是無狀態(tài)協(xié)議,意味著服務器不需要存儲會話信息,每個請求都是獨立的。更多信息
這意味著:
- 所有請求來自客戶端(如您的瀏覽器)。
- 服務器對請求作出響應。
- 請求(命令)和響應均為可讀文本格式。
- 請求彼此獨立,服務器不需要跟蹤請求。
請求與響應結構
請求和響應的消息結構相同,如下所示:
一個請求包括:
命令或請求?+?可選的頭部?+?可選的內(nèi)容體。
一個響應包括:
狀態(tài)碼?+?可選的頭部?+?可選的內(nèi)容體。
使用簡單的 CRLF(回車和換行)組合來分隔各部分,單獨的空行(CRLF)表示頭部結束。
如果請求或響應包含消息體,則這一情況在頭部中表明。
消息體的存在通過內(nèi)容長度(Content-Length)或傳輸編碼(Transfer-Encoding) 頭域來信號化。請求消息的構架與方法語義無關,即使該方法沒有定義任何消息體的用途。 – 參見 RFC 7230第 3.3 節(jié)。
請注意:消息體后不跟隨 CRLF。參見 RFC 7230 第 3.5 節(jié)。
HTTP 請求詳解
我們之前已經(jīng)看到了一般的請求和響應格式,現(xiàn)在我們將更詳細地介紹請求消息。
起始行是必須的,其結構如下:
方法?+ 資源路徑 + 協(xié)議版本
例如,如果我們嘗試訪問 www.testsite5.com 上的網(wǎng)頁 testpage.htm,請求的起始行將是:
GET /test.htm HTTP/1.1
其中:
- GET?是方法
- /testpage.htm?是資源的相對路徑
- HTTP/1.1?是我們使用的協(xié)議版本
注釋:
- 相對路徑不包括域名。
- Web 瀏覽器使用我們輸入的 URL 來創(chuàng)建資源的相對 URI。
注意: ?URL(統(tǒng)一資源定位符)用于網(wǎng)頁,它是URI(統(tǒng)一資源標識符)的一個例子。
瀏覽器實際上不顯示 HTTP 請求,只能通過特殊工具如?http header live(Firefox) ?查看。
HTTP 與 URL
大多數(shù)人熟悉在 Web 瀏覽器中輸入 URL。通??雌饋硐襁@樣:
URL 還可以包含通常由瀏覽器隱藏的端口,但您可以手動包括它,如下圖所示:
這告知網(wǎng)頁瀏覽器資源的地址以及檢索資源所使用的協(xié)議 (HTTP)。
HTTP?是從服務器到客戶端傳輸資源(網(wǎng)頁、圖片、視頻等)的傳輸協(xié)議。
HTTP 響應和響應代碼
每個請求都有一個響應。響應包括:
- 狀態(tài)碼 和 描述
- 一個或多個可選的頭部
- 可選的消息主體,可以包括多行,甚至二進制數(shù)據(jù)
響應狀態(tài)碼分為 5 組,每組有其含義和三位數(shù)字代碼:
- 1xx?– 信息性
- 2xx?– 成功
- 3xx?– 多種選擇
- 4xx?– 客戶端錯誤
- 5xx?– 服務器錯誤
例如,一個成功的頁面請求將返回一個 200 響應碼,一個不成功的請求將返回一個 400 響應碼。
您可以在這里找到完整的列表及其含義。
請求響應示例
我們將檢查訪問簡單網(wǎng)頁(testpage.htm)時的請求和響應。
這是我在瀏覽器地址欄中輸入的:
這是瀏覽器顯示的響應:
以下是幕后發(fā)生的 HTTP請求-響應 的屏幕截圖:
注意,瀏覽器自動插入請求頭,同樣地,Web 服務器也自動插入響應頭。請求中沒有正文內(nèi)容。響應中的正文內(nèi)容是網(wǎng)頁,在瀏覽器中顯示,并不由實時頭部工具顯示。
請求類型
到目前為止,我們還未提及請求類型,但我們在示例中已經(jīng)見到了 GET 請求類型。
GET 請求 類型或方法用于從 Web 服務器請求資源。GET 是最常用的請求類型,并且是原始 HTTP 規(guī)范中唯一的請求類型。
請求類型、方法或動詞
HTTP 協(xié)議現(xiàn)在支持 8 種請求類型,也稱為方法或動詞,它們是:
- GET – 從服務器請求資源
- POST – 向服務器提交資源(例如,文件上傳)
- PUT – 與 POST 相似,但用于替換資源
- DELETE – 從服務器刪除資源
- HEAD – 類似 GET,但只返回頭部而不返回內(nèi)容
- OPTIONS – 獲取資源的選項
- PATCH – 對資源應用修改
- TRACE – 執(zhí)行消息回環(huán)
在今天的 Internet 上,GET(獲取網(wǎng)頁)和 POST(提交 Web 表單)方法是最常使用的。文章來源:http://www.zghlxwxcb.cn/news/detail-854216.html
其他方法在與 Web 和物聯(lián)網(wǎng) APIs 工作時使用,尤其是 PUT、DELETE 和 HEAD。文章來源地址http://www.zghlxwxcb.cn/news/detail-854216.html
- 源于:Introduction to HTTP : Understanding HTTP Basics
到了這里,關于簡單了解 HTTP 基礎知識的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!