http協議中各個響應狀態200_301_404_500等返回值含義快速一覽


一、定義

從HTTP的定義可以看出,HTTP協議是互聯網上進行數據通信的基礎協議,用來交換或傳輸超文本。超文本是一種結構化的文本,在包含文本的節點之間使用邏輯鏈接(也叫超鏈接)。

二、概述

HTTP是基於TCP/IP協議的應用層協議。HTTP允許進行客戶端和服務器之間的通信。通過HTTP或HTTPS請求的資源由URI(統一資源標識符)或URL(統一資源定位符)來標識。

在客戶端-服務器的模式中,HTTP扮演着請求-響應協議的角色。客戶端(通常是瀏覽器)提交HTTP請求消息給服務器。服務器可以提供HTML文件或其他類型的資源,或者代表客戶端執行操作,返回響應消息給客戶端。響應包含關於請求的完整狀態信息。

三、歷史

1、HTTP/0.9

該版本於1991年發佈。

  • 只接受GET一種請求方法,沒有指定版本號,且不支持請求頭。
  • 服務器只能返回HTML格式的字符串。

2、HTTP/1.0

該版本於1996年發佈。

  • 除了GET方法,還新增了POST和HEAD。任何格式的內容都可以發送。
  • 請求和響應的格式,除了數據部分,還包括頭信息,用來描述元數據。
  • 新增了狀態碼、多字符集支持、權限、緩存、內容編碼等功能。

3、HTTP/1.1

該版本於1997年發佈。對1.0版本進行了修訂和完善,並一直沿用至今。

  • 新增了PUT、PATCH、OPTIONS、DELETE等方法。
  • 客戶端請求的頭信息新增了Host字段,用來指定服務器的域名,這樣就可以將請求發往同一臺服務器的不同網站。
  • 新增了持久連接,可以被多個請求多次使用。
  • 新增了管道機制,在同一個TCP連接裏,客戶端可以同時發送多個請求,但服務器還是按照順序進行響應。
  • 使用Content-Length聲明本次響應的數據長度,以區分多個響應。

4、HTTP/2

該版本於2015年發佈。

  • 頭信息和數據都是二進制,統稱爲幀。對頭信息進行了壓縮。
  • 在一個TCP連接中,客戶端可以同時發送多個請求或接收響應,不需要按照順序一一對應。
  • 將每個請求或響應的所有數據包稱爲一個數據流,在發送數據包的時候必須標記屬於哪個數據流。
  • 允許服務器主動向客戶端推送,發送資源。

四、格式

每個HTTP請求和響應都遵循相同的格式,包含請求行/狀態行、消息頭(Header)和消息體(Body),其中消息體是可選的。

  • 消息頭包含若干屬性,但要保證一行只有一個屬性,並且必須以\r\n(回車換行)結尾。
  • 當遇到空行時,後面的數據全屬於消息體。

五、HTTP請求

1、請求行

GET / HTTP/1.1

其中,GET表示請求方法;/表示請求資源的路徑;HTTP/1.1表示協議版本。

2、請求方法

用來表明對指定資源的操作方式。常用的請求方法有:

  • OPTIONS,返回服務器針對特定資源所支持的HTTP請求方法。
  • HEAD,與GET請求一致,只不過不會返回響應體。
  • GET,請求指定的資源。
  • POST,向指定資源提交數據進行處理請求,數據包含在請求體中,可能會導致新資源的創建或已有資源的修改。
  • PUT,向指定資源位置上傳最新內容。
  • DELETE,請求服務器刪除所標識的資源。

GET和POST方法的主要區別:

  • GET提交的數據會放在URL之後,以?分割URL和傳輸數據,參數之間以&相連。POST把提交的數據放在Body中。
  • GET提交的數據大小最多1024字節。POST提交的數據大小沒有限制。
  • GET提交數據時,會出現在URL上。POST則不會出現在URL上。

3、請求頭

是對請求的一種限定,包含很多屬性。常用的屬性有:

  • Accept,客戶端可以接受的MIME類型。
  • Accept-Encoding,客戶端可以接受的數據壓縮格式。
  • Accept-Charset,客戶端可以接受的字符集編碼。
  • Accept-Language,客戶端可以接受的語言。
  • User-Agent,客戶端的一些基本信息,如使用的操作系統和瀏覽器的名稱和版本等。
  • Content-Type,表示請求中的媒體類型信息。
  • Content-Length,表示請求消息體的長度。
  • Connection,指定是否繼續保持連接。
  • Host,指定要訪問的虛擬主機名和端口號。
  • Cookie,將cookie值發送給服務器。
  • If-Modified-Since,緩存資源的最後獲取時間。

六、HTTP響應

1、狀態行

HTTP/1.1 200 OK

其中,HTTP/1.1表示協議版本;200表示狀態碼;OK是狀態說明。

2、狀態碼

根據響應結果的類型,大致分爲以下幾類:

2.1 1XX(信息類)

該類型狀態碼錶示接收到請求並且繼續處理。

  • 100,客戶端必須繼續發出請求。
  • 101,客戶端要求服務器根據請求轉換HTTP協議版本。

2.2 2XX(響應成功)

該類型狀態碼錶示動作被成功接收、理解和接受。

  • 200,表明該請求被成功地完成,所請求的資源發送到客戶端。
  • 201,提示知道新文件的URL。
  • 202,接受並處理,但處理未完成。
  • 203,返回信息不確定或不完整。
  • 204,收到請求,但返回信息爲空。
  • 205,服務器完成了請求,用戶必須復位當前已經瀏覽過的文件。
  • 206,服務器已經完成了部分用戶的GET請求。

2.3 3XX(重定向類)

該類型狀態碼錶示爲了完成指定的動作,必須接受進一步處理。

  • 300,請求的資源可在多處獲得。
  • 301,本網頁被永久性轉移到另一個URL。
  • 302,請求的網頁被重定向到新的地址。
  • 303,建議用戶訪問其他URL或訪問方式。
  • 304,自從上次請求後,請求的網頁未修改過。
  • 305,請求的資源必須從服務器指定的地址獲得。
  • 306,前一版本HTTP中使用的代碼,現已不再使用。
  • 307,聲明請求的資源臨時性刪除。

2.4 4XX(客戶端錯誤類)

該類型狀態碼錶示請求包含錯誤語法或不能正確執行。

  • 400,客戶端請求有語法錯誤。
  • 401,請求未經授權。
  • 402,保留有效ChargeTo頭響應。
  • 403,禁止訪問,服務器收到請求,但拒絕提供服務。
  • 404,可連接服務器,但服務器無法取得所請求的網頁,請求資源不存在。
  • 405,用戶在Request-Line字段定義的方法不被允許。
  • 406,根據用戶發送的Accept,請求資源不可訪問。
  • 407,類似401,用戶必須首先在代理服務器上取得授權。
  • 408,客戶端沒有在用戶指定的時間內完成請求。
  • 409,對當前資源狀態,請求不能完成。
  • 410,服務器上不再有此資源。
  • 411,服務器拒絕用戶定義的Content-Length屬性請求。
  • 412,一個或多個請求頭字段在當前請求中錯誤。
  • 413,請求的資源大於服務器允許的大小。
  • 414,請求的資源URL長於服務器允許的長度。
  • 415,請求資源不支持請求項目格式。
  • 416,請求中包含Range請求頭字段,在當前請求資源範圍內沒有range指示值。
  • 417,服務器不滿足請求Expect頭字段指定的期望值。

2.5 5XX(服務器錯誤類)

該類型狀態碼錶示服務器或網關錯誤。

  • 500,服務器錯誤。
  • 501,服務器不支持請求的功能。
  • 502,網關錯誤。
  • 503,無法獲得服務。
  • 504,網關超時。
  • 505,不支持的http版本。

3、響應頭

是對響應的一種限定,包含很多屬性。常用的屬性有:

  • Location,實現請求重定向。
  • Server,服務器的基本信息。
  • Content-Encoding,服務器發送數據時使用的壓縮格式。
  • Content-Language,發送的數據所用的語言。
  • Content-Type,所發送的數據的類型。
  • Content-Length,發送數據的大小。
  • Set-Cookie,把cookie發送到客戶端。
  • Last-Modified,指示資源的最後修改日期和時間。
本文爲"測試那點事_TestYao"博客整理收集,轉載請註明出處,謝
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章