Http協議響應的解析
阿新 • • 發佈:2019-02-07
在接受到一個請求後,伺服器會返回一個HTTP響應。HTTP響應由三部分構成,即狀態行,相應報頭和響應正文。
1、狀態行
狀態行由HTTP版本(HTTP-Version)、狀態碼(Status-Code)以及解釋狀態碼的簡單短語(Reason-phrase)三部分構成,請格式如下:
HTTP-Version Status-Code Reason-phrase CRLF
狀態碼由三位數字組成,共有5大類33種,其中第一個數字指定了響應型別,取值為1~5,後面兩位沒有具體的規定。
- 1xx:指示資訊,如請求收到了或正在處理。
- 2xx:成功。
- 3xx:重定向。
- 4xx:客戶端錯誤,如請求中含有錯誤的語法或不能正常完成。
- 5xx:伺服器端錯誤,如伺服器失效而無法完成請求。
例如:
- 200:OK 成功
- 304:Not Modified 未修改
- 400:Bad Request 錯誤請求
- 404:Not Found 未找到
典型的響應狀態碼解釋如下:
- 200:表示請求成功,成功返回了請求的資源。
- 302/307:表示臨時重定向,此時請求的文件已經臨時移動到其他位置,該文件新的URL將在Location響應報頭中給出。
- 401:表示瀏覽器訪問的是一個受到密碼保護的頁面。
- 403:表示伺服器收到請求,但拒絕提供服務。
- 404:表示找不到資源,即伺服器上不存在瀏覽器請求的資源。
- 500:表示內部伺服器錯誤,即伺服器端的CGI、ASP、JSP等程式發生了錯誤。
- 503:表示伺服器暫時性超載,不能處理當前的請求。
狀態行舉例:
HTTP 1.0 200 OK
這是Web伺服器應答的第一行,列出伺服器正在執行的HTTP版本號和應答程式碼。程式碼''200 OK''表示請求完成。
2、響應報頭
有了響應報頭伺服器就可以傳遞不能放在狀態行中的附加響應資訊,以及伺服器的資訊和對Request-URI所標識的資源進行下一步訪問資訊。
常見的響應報頭如下:
- Allow:指出伺服器所支援的請求方法,如GET、POST等方法。
- Content-Encoding:指定文件的編碼方法。
- Content-Length:指定響應中資料的位元組長度。
- Content-Type:指定回送資料的MIME型別。
- Date:指定傳送HTTP訊息的日期。
- Last-Modified:指定返回資料的最後修改時間。
- Location:重定向請求到一個新的URI地址。
- Refresh:指定瀏覽器定時重新整理時間。
- Expires:指定瀏覽器快取資料的時間。
- Server:指定伺服器名稱,包含了處理請求的伺服器使用的軟體產品資訊,與User-Agent請求報頭相對應。
3、響應正文
響應正文是指伺服器所返回的資源內容,如HTML頁面。響應報頭和響應正文之間必須使用空格分隔。
一個典型的HTTP響應示例如下:
HTTP/1.1 200 OK /*狀態行*/
Connection:close /*連線狀態*/
Date:Wed, 19 Nov 2017 02:20:45 GMT /*日期*/
Server:Apache/2.0.54(Unix) /*伺服器*/
Content-Length:397 /*指定資料包含的位元組長度*/
Content-Type:text/html /*指定返回資料的MIME型別*/
/*空行*/
<html>
<body>
/*資料*/
</body>
</html>