HTTP請求頭格式
一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行和請求數據4個部分組成,下圖給出了請求報文的一般格式。
提示: 回車符 \r 換行符 \n
請求首行分析:
請求方式: GET 和 POST 方式:
GET請求:地址欄訪問、超鏈接訪問都是get請求方式,get請求方式不安全,地址欄大小有限。
POST請求:內容在請求體中,數據安全,理論上內容可以無限。
請求地址:訪問服務器的哪個目錄。
請求協議: HTTP版本有1.0和1.1兩個版本, 1.0版本建立連接后立即斷開,下次訪 問需要再次建立連接, 1.1版本 建立連接后可以不用斷開,直到不發送信息后 才斷開節約了資源;
請求頭分析
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
表示客戶端可以接受的內容類型,多個值使用;分號隔開q=0.9 表示權重優先級,*/*表示可以接受任意類型內容;Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
表示客戶端可以接受的語言User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64x64;
瀏覽器信息,例如使用的是網井的內核, windows64位系統;Accept-Encoding: gzip, deflate
–>>支持的壓縮格式Host: localhost:8888
====>訪問地址Connection: keep-alive
—>>保持連接 和HTTP1.1版本有關,默認保持3sContent-Type: application/x-www-form-urlencoded
表單提交時才有可能出現,表示表單的數據類型,使用url編碼,url編碼 % 16位數Content-Length: 7
—>post請求 請求體長度Upgrade-Insecure-Requests: 1
–>>告訴服務器,瀏覽器可以處理https協議
請求空行分析:
就是一個分隔符,用來區分請求頭和請求體的;
請求體分析:
只有POST請求才有請求體, 因此 POST請求 請求體中存放的是表單提交的鍵值對。
例如:name=’zs’&age=10
HTTP響應格式
HTTP響應也由三個部分組成,分別是:狀態行、消息報頭、響應正文。
響應首行(狀態行)分析:HTTP/1.1 200 OK
包含 協議–>>HTTP/1.1, 響應碼(狀態碼)—>>200 , 狀態碼描述—>>OK
狀態碼:
- 200: 服務器很好的處理了客戶端的請求,一切 OK
- 302: 重定向(發生兩次請求)
例如經常去一家飯店吃飯,突然某一天飯店搬遷,只剩下一個門,門上寫着新店在左邊100米處,然后你根據紙條找到新飯店; 302就相當於門上的條,當你訪問一個網站時他給你返回302你需要重新訪問新的網址; 這里面發生了2次請求 - 304:通常表示資源文件在服務器沒有更改,而瀏覽器端又有緩存,這時候回送 304 狀體碼通知瀏覽器拿本地的緩存顯示。
- 404:表示客戶端訪問的資源路徑有問題或者資源問題不存在。
- 500:表示服務器出現了 異常.
響應頭部分析:
server: Apache-Coyote/1.1
—>> 服務器版本號Set-Cookie:JSESSIONID=ECA8005D1235BBB6B9CFCC338A8206FD; Path=/03test; HttpOnly
Content-Type: text/html;charset=utf-8
響應字符集,告訴瀏覽器以什么樣的字符集解碼;Content-Length: 265
響應體長度Date: Fri, 23 Jun 2017 13:45:01 GMT
發送日期 少8個小時;Expires: -1、Cache-control:no-cache、Pragma:no-cache
三個響應頭一起使用, 表示禁止瀏覽器緩存當前頁面. 每個瀏覽器廠商對認識的禁止頭不同因此三個一起使用。
淘寶登錄頁