HTTP(超文字傳輸協議)報文格式
HTTP請求報文
http請求報文資料分為三部分:
- 請求行
- 請求頭部
- 請求資料
http請求報文的格式如下圖所示:
下面是Get請求的例子:
GET /92316461213.jpg HTTP/1.1 Host img.mukewang.com User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 Accept image/webp,image/*,*/*;q=0.8 Referer http://www.imooc.com/ Accept-Encoding gzip, deflate, sdch Accept-Language zh-CN,zh;q=0.8
第一部分:請求行
對應著請求行可以看出來Get請求,協議的版本為http1.1訪問的資源為/92316461213.jpg
第二部分:請求頭部,伺服器要使用的附加資訊
下面簡單介紹部分請求頭部資訊。
- Mozilla/5.0由於歷史上的瀏覽器大戰,當時想獲得圖文並茂的網頁,就必須宣稱自己是 Mozilla 瀏覽器。此事導致如今User-Agent裡通常都帶有Mozilla字樣,出於對歷史的尊重,大家都會預設填寫該部分。
- Windows NT 10.0; WOW64說明作業系統的資訊。
- AppleWebKit/537.36 (KHTML, like Gecko)引擎版本。
- Chrome/51.0.2704.106Safari/537.36瀏覽器版本。
第三部分:空行
根據HTTP報文格式來看請求頭部之下必須是空行。
第四部分:請求資料
下面是POST請求的例子:
POST / HTTP1.1 Host:www.wrox.com User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley
第一部分:請求行
第二部分:請求頭部
第三部分:空行
第四部分:請求資料
HTTP響應報文
http響應報文資料分為三部分:
- 響應頭部
- 訊息報頭
- 響應資料
http請求報文的格式如下圖所示:
下面是POST響應的例子:
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
第一部分:響應頭部
由HTTP版本號,狀態碼,狀態訊息三部分組成
第二部分:訊息報頭
第二行和第三行為訊息報頭。
Date:生成響應的日期和時間;
Content-Type:指定了MIME型別的HTML(text/html),編碼型別是UTF-8
第三部分:空行
訊息報頭之後必須跟一個空行
第四部分:響應資料
伺服器返回給客戶端的文字資訊,空行後面的html部分為響應正文。
請求返回狀態碼如下所示:
200 OK 當您的操作將在響應正文中返回資料時,出現此結果。
204 No Content 當您的操作成功,但不在響應正文中返回資料時,出現此結果。
304 Not Modified(重定向) 當測試實體自上次檢索以來是否被修改時,出現此結果。
403 Forbidden 客戶端錯誤
401 Unauthorized 客戶端錯誤
413 Payload Too Large(客戶端錯誤) 當請求長度過長時,出現此結果。 400 BadRequest(客戶端錯誤) 當引數無效時,出現此結果。 404 Not Found(客戶端錯誤) 當資源不存在時,出現此結果。
405 Method Not Allowed(客戶端錯誤)由於方法和資源組合不正確而出現此錯誤。 例如,您不能對一個實體集合使用 DELETE 或 PATCH。
412 Precondition Failed 客戶端錯誤
501 Not Implemented(伺服器錯誤) 當未實施某個請求的操作時,出現此結果。
503 Service Unavailable(伺服器錯誤) 當 Web API 服務不可用時,出現此結果。