一篇非常不錯(cuò)的介紹http基礎(chǔ)的博客

原文:http://www.steves-internet-guide.com/http-basics/

了解 HTTP 基礎(chǔ)知識(shí)

HTTP 超文本傳輸協(xié)議,用于 Web 傳輸數(shù)據(jù)。

它是 Web 開發(fā)的關(guān)鍵協(xié)議,并且由于廣泛使用,還用于在 IOT 應(yīng)用程序中傳輸數(shù)據(jù)和命令。
http協(xié)議的第一個(gè)版本只有一個(gè)方法,即 GET,它將從服務(wù)器請(qǐng)求頁面。

服務(wù)器的響應(yīng)始終是 HTML 頁面。- Wiki

想要了解 HTTP 協(xié)議開始時(shí)的簡單程度,可以查看只有 1 頁的原始規(guī)范。

從最初的0.9 版本開始,已經(jīng)有多個(gè) HTTP版本。

當(dāng)前版本為 1.1,最后一次修訂是在 2014 年。有關(guān)詳細(xì)信息,請(qǐng)參閱Wiki。

工作機(jī)理

與大多數(shù) Internet 協(xié)議http一樣,它是使用客戶端服務(wù)器通信模型的基于命令和響應(yīng) 文本的協(xié)議。


image.png

客戶端發(fā)出請(qǐng)求,服務(wù)器響應(yīng)。

HTTP 協(xié)議也是一種無狀態(tài)協(xié)議,這意味著服務(wù)器不需要存儲(chǔ)會(huì)話信息,并且每個(gè)請(qǐng)求彼此獨(dú)立。- 請(qǐng)參閱此wiki
這表示:

  • 所有請(qǐng)求都來自客戶端(您的瀏覽器)
  • 服務(wù)器響應(yīng)請(qǐng)求。
  • 請(qǐng)求(命令)和響應(yīng)是可讀的文本。
  • 請(qǐng)求是相互獨(dú)立的,服務(wù)器不需要跟蹤請(qǐng)求。

請(qǐng)求和響應(yīng)結(jié)構(gòu)

請(qǐng)求和響應(yīng)消息結(jié)構(gòu)相同,如下圖所示:

image.png

請(qǐng)求包括:

命令或請(qǐng)求+可選標(biāo)頭+可選正文內(nèi)容
響應(yīng)包括:

狀態(tài)碼+可選標(biāo)題+可選正文內(nèi)容。

一個(gè)簡單的CRLF(回車和換行)組合用于分隔部分,單個(gè)空行 ( CRLF ) 表示標(biāo)題的結(jié)尾。

如果請(qǐng)求或響應(yīng)包含消息正文,則在標(biāo)頭中指明

請(qǐng)求中是否存在消息正文由Content-LengthTransfer-Encoding標(biāo)頭字段表示。請(qǐng)求消息框架獨(dú)立于方法語義,即使該方法沒有定義消息體的任何用途。– RFC 7230第 3.3 節(jié)。

注意:消息正文后面沒有 CRLF 請(qǐng)參閱RFC 7230第 3.5 節(jié)**

HTTP 請(qǐng)求

之前看到了一般的請(qǐng)求響應(yīng)格式,下面將更詳細(xì)地介紹請(qǐng)求消息。

起跑線是強(qiáng)制性的,其結(jié)構(gòu)如下:

方法+資源路徑+協(xié)議版本

例如,如果我們嘗試訪問 www.testsite5.com 上的網(wǎng)頁 testpage.htm

請(qǐng)求的起始行是: GET /test.htm HTTP/1.1

  • GET是方法
  • /testpage.htm是資源的相對(duì)路徑。
  • HTTP/1.1是我們使用的協(xié)議版本
注意:
  1. 相對(duì)路徑不包括域名。
  2. Web 瀏覽器使用我們輸入的 URL 來創(chuàng)建資源的相對(duì) URI。
    注意: URL(統(tǒng)一資源定位器)用于網(wǎng)頁。它是URI(統(tǒng)一資源指示符)的一個(gè)示例。

http包可以用解析工具如wireshark抓取或者chrome開發(fā)者工具 netrwork分析中可以查看

HTTP 與 URL

大多數(shù)人都熟悉在網(wǎng)絡(luò)瀏覽器中輸入網(wǎng)址。通??雌饋硐襁@樣。


image.png

url 還可以包含通常被瀏覽器隱藏的端口,但您可以手動(dòng)包含它,如下所示:

image.png

這告訴 Web 瀏覽器要定位的資源的地址以及用于檢索該資源的協(xié)議(http)。

http是將資源(網(wǎng)頁、圖像、視頻等)從服務(wù)器傳輸?shù)娇蛻舳说膫鬏攨f(xié)議。

HTTP響應(yīng)和響應(yīng)代碼

每個(gè)請(qǐng)求都有一個(gè)響應(yīng)。響應(yīng)包括

  • 狀態(tài)碼說明
  • 1 個(gè)或多個(gè)可選標(biāo)題
  • 可選的消息體(消息體可能有多行二進(jìn)制數(shù)據(jù)流)

響應(yīng)狀態(tài)代碼分為 5 組,每組有一個(gè)含義和一個(gè)三位數(shù)代碼。

  • 1xx – 信息
  • 2xx – 成功
  • 3xx - 多項(xiàng)選擇
  • 4xx – 客戶端錯(cuò)誤
  • 5xx - 服務(wù)器錯(cuò)誤

例如,成功的頁面請(qǐng)求將返回200響應(yīng)代碼和不成功的400響應(yīng)代碼。

可以在此處找到完整列表及其含義

請(qǐng)求響應(yīng)示例

當(dāng)我們?cè)L問一個(gè)簡單的網(wǎng)頁(testpage.htm)時(shí),我們將檢查他的請(qǐng)求和響應(yīng)

這是我在瀏覽器地址欄中輸入的內(nèi)容:


image.png

這是瀏覽器顯示的響應(yīng):

image.png

這是幕后發(fā)生的http請(qǐng)求響應(yīng)的屏幕截圖。

image.png

請(qǐng)注意,請(qǐng)求標(biāo)頭是由瀏覽器自動(dòng)插入的,響應(yīng)標(biāo)頭也是由 Web 服務(wù)器插入的。

請(qǐng)求中沒有正文內(nèi)容?;貜?fù)中的正文內(nèi)容是一個(gè)網(wǎng)頁,并顯示在瀏覽器中,而不是由實(shí)時(shí)標(biāo)題工具顯示。

請(qǐng)求類型

到目前為止,我們還沒有提到請(qǐng)求類型,但我們已經(jīng)在示例中看到了 GET 請(qǐng)求類型。

GET 請(qǐng)求類型或方法用于從 Web 服務(wù)器請(qǐng)求資源。

GET 是最常用的請(qǐng)求類型,也是原始 HTTP 規(guī)范中唯一的請(qǐng)求類型。

請(qǐng)求類型、方法

HTTP 協(xié)議現(xiàn)在支持 8 種請(qǐng)求類型,在文檔中也稱為方法或動(dòng)詞,它們是:

  • GET - 從服務(wù)器請(qǐng)求資源
  • POST – 向服務(wù)器提交資源(例如文件上傳)
  • PUT -As POST 但替換資源
  • DELETE - 從服務(wù)器中刪除資源
  • HEAD - 作為 GET 但只返回標(biāo)題而不是內(nèi)容
  • OPTIONS - 獲取資源的選項(xiàng)
  • PATCH - 對(duì)資源應(yīng)用修改
  • TRACE - 執(zhí)行消息環(huán)回

在當(dāng)今的 Internet 上,GET(獲取網(wǎng)頁)和POST(提交 Web 表單)方法是最常用的方法。

其他方法用于處理 Web 和 IOT API,特別是 put、delete 和 head。

w3c有一個(gè)很好的基本概述,Mozila MDN 更詳細(xì)地介紹了它們。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容