http協議中各個響應狀態200_301_404_500等返回值含義快速一覽
阿新 • • 發佈:2019-02-19
一、定義
從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,指示資源的最後修改日期和時間。