1. 程式人生 > >http協議中各個響應狀態200_301_404_500等返回值含義快速一覽

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"部落格整理收集,轉載請註明出處,謝