超文本傳輸協議是應用程序用於相互通信的協議。從本質上講,HTTP負責委託客戶端和服務器之間的所有互聯網媒體文件。這包括HTML,圖像,文本文件,電影以及介於兩者之間的所有內容。它可以快速可靠地完成這項工作。
HTTP是 應用程序協議而不是傳輸協議,因為它用於應用程序層中的通信。在這裡慢慢記憶是網絡堆棧的樣子。從該圖像中,您可以清楚地看到HTTP是應用程序協議,TCP可以在傳輸層上運行。
資源:互聯網上的一切都是資源,HTTP與資源協同工作。這包括文件,流,服務和其他一切。HTML頁面是一種資源,Youtube視頻是一種資源,您在Web應用程序上的日常任務的電子表格是一種資源......您明白了。
你如何將一種資源與另一種資源區分開來?
通過提供URL(統一資源定位器)。
URL指向瀏覽器可以找到資源的唯一位置。
如何在Web客戶端和Web服務器之間交換消息
每個內容,每個資源都存在於某個Web服務器(HTTP服務器)上。這些服務器期望HTTP請求提供這些資源。
但是,您如何從Web服務器請求資源?
當然,您需要一個HTTP客戶端!
您現在正在使用HTTP客戶端來閱讀本文。Web瀏覽器是HTTP客戶端。它們與HTTP服務器通信以檢索計算機的資源。一些最受歡迎的客戶是谷歌的Chrome,Mozilla的Firefox,Opera,Apple的Safari,以及不幸的是仍然臭名昭著的Internet Explorer。
消息和一些消息示例
那麼HTTP消息是什麼樣的?
如果不太多談論它,這裡有一些HTTP消息的例子:
請求的第一行是為請求行保留的。它由 請求方法名稱,請求URI和HTTP版本組成。
接下來的幾行代表請求標頭。請求標頭為請求提供附加信息,例如請求期望的內容類型,授權信息等。
對於GET請求,故事就在那裡結束。POST請求還可以具有正文並以正文消息的形式攜帶其他信息。在這種情況下,它是一條JSON消息,其中包含有關如何為URI中指定的給定repo創建GitHub webhook的附加信息。webhook創建需要該消息,因此我們使用POST請求將該信息提供給GitHub API。
請求行和請求標頭必須後跟
作為對這些請求的回應,我們得到了什麼?
響應消息的結構與請求的結構非常相似,除了調用的第一行是 狀態行,它本身令人驚訝地傳遞有關響應狀態的信息。
狀態行後跟響應標頭和響應正文 。
MIME類型
MIME類型用作描述Internet上文件類型的標準方法。您的瀏覽器有一個MIME類型列表,Web服務器也是如此。這樣,無論操作系統如何,都可以以相同的方式傳輸文件。
一個有趣的事實是MIME代表多用途Internet郵件擴展,因為它們最初是為多媒體電子郵件開發的。它們已經適用於HTTP和其他幾種協議。
每MIME類型由一個的類型,子類型, 和列表 可選參數 在以下格式: 類型/子類型; 可選參數。
HTTP請求方法(也稱為“動詞”)定義將對資源執行的操作。HTTP定義了幾種請求方法,其中最常見/使用的是GET和POST方法。
請求方法可以是冪等的或不是冪等的。這只是一個奇特的術語,用於解釋從同一資源多次調用該方法是安全/不安全的。換句話說,這意味著,唯一目的是檢索信息的GET方法默認情況下應該是冪等的。一遍又一遍地在同一資源上調用GET不應該導致不同的響應。另一方面,POST方法不是冪等方法。
在HTTP / 1.1之前,只有三種方法:GET,POST和HEAD,並且HTTP / 1.1的規範在遊戲中帶來了更多:OPTIONS,PUT,DELETE,TRACE和CONNECT。
頭
標題字段是冒號分隔的名稱 - 值字段,您可以在請求或響應消息的第一行之後找到它們。它們為HTTP消息提供更多上下文,並確保客戶端和服務器適當地瞭解請求或響應的性質。
總共有五種類型的標題:
- 常規標題: 這些標題對服務器和客戶端都很有用。一個很好的例子是Date頭字段,它提供有關消息創建時間的信息。
- 請求標頭: 特定於請求消息。它們為服務器提供附加信息。例如,Accept:* / * header字段通知服務器客戶端願意接收任何媒體類型。
- 響應標頭: 特定於響應消息。它們為客戶提供其他信息。例如,Allow:GET,HEAD,PUT標頭字段通知客戶端所請求資源允許哪些方法。
- 實體標題: 這些標題處理實體主體。例如,Content-Type:text / html標題允許應用程序知道數據是HTML文檔。
- 擴展標頭: 這些是由應用程序開發人員構建的非標準標頭。它們不是HTTP的一部分,但需要被容忍。
狀態代碼
狀態代碼 就是一個表示請求的結果的三位數。接下來是原因短語,它是人類可讀的狀態碼解釋。
一些例子包括:
- 200:好的
- 404:未找到
- 500:內部服務器錯誤
狀態代碼分為五個不同的組。
通過學習HTTP獲得的知識並不能幫助您直接解決某些問題。但它讓您瞭解互聯網通信的基本原則,您可以將其應用於比HTTP更高級別的幾乎所有其他問題。無論是REST,API,Web應用程序開發還是網絡,您現在都可以在解決這些問題時更加自信。
閱讀更多 風一樣的小火柴 的文章