1. 程式人生 > >Http的請求和響應協議分析

Http的請求和響應協議分析

一、Http請求協議

1、什麼是Http協議

HTTP,超文字傳輸協議(HyperText Transfer Protocol)是網際網路上應用最為廣泛的 一種網路協議。所有的WWW檔案都必須遵守這個標準。設計HTTP最初的目的是為 了提供一種釋出和接收HTML頁面的方法

2、Http協議的組成

Http協議由Http請求和Http響應組成,當在瀏覽器中輸入網址訪問某個網站時, 你的瀏覽器會將你的請求封裝成一個Http請求傳送給伺服器站點,伺服器接收到請 求後會組織響應資料封裝成一個Http響應返回給瀏覽器。即沒有請求就沒有響應。
這裡寫圖片描述

3、Http請求

編輯一個form.html的表單頁面,如下:
這裡寫圖片描述

點選提交按鈕,抓包如下:
這裡寫圖片描述

1)請求行
請求方式:POST、GET
請求的資源:/DemoEE/form.html
協議版本:HTTP/1.1
HTTP/1.0,傳送請求,建立一次連線,獲得一個web資源,連線斷開。
HTTP/1.1,傳送請求,建立一次連線,獲得多個web資源,保持連線。

2)請求頭
請求頭是客戶端傳送給伺服器端的一些資訊,使用鍵值對錶示key:value

常見請求頭 描述 (紅色掌握,其他了解)
Referer 瀏覽器通知伺服器,當前請求來自何處。如果是直接訪問,則不會有這個頭。常用於:防盜鏈
If-Modified-Since 瀏覽器通知伺服器,本地快取的最後變更時間。與另一個響應頭組合控制瀏覽器頁面的快取。
Cookie 與會話有關技術,用於存放瀏覽器快取的cookie資訊。
User-Agent 瀏覽器通知伺服器,客戶端瀏覽器與作業系統相關資訊
Connection 保持連線狀態。Keep-Alive 連線中,close 已關閉
Host 請求的伺服器主機名
Content-Length 請求體的長度
Content-Type 如果是POST請求,會有這個頭,預設值為application/x-www-form-urlencoded,表示請求體內容使用url編碼
Accept: 瀏覽器可支援的MIME型別。檔案型別的一種描述方式。 MIME格式:大型別/小型別[;引數]
Accept-Encoding 瀏覽器通知伺服器,瀏覽器支援的資料壓縮格式。如:GZIP壓縮
Accept-Language 瀏覽器通知伺服器,瀏覽器支援的語言。各國語言(國際化i18n)

3)請求體
當請求方式是post的時,請求體會有請求的引數,格式如下:
username=zhangsan&password=123
如果請求方式為get,那麼請求引數不會出現在請求體中,會拼接在url地址後面
http://localhost:8080…?username=zhangsan&password=123

二、Http響應協議

1、Http響應

這裡寫圖片描述

1)響應行
Http協議
狀態碼:
常用的狀態碼如下:
200 :請求成功。
302 :請求重定向。
304 :請求資源沒有改變,訪問本地快取。
404 :請求資源不存在。通常是使用者路徑編寫錯誤,也可能是伺服器資源已刪除。
500 :伺服器內部錯誤。通常程式拋異常。
狀態資訊:狀態資訊是根據狀態碼變化而變化的

2)響應頭
響應也都是鍵值對形式,伺服器端將資訊以鍵值對的形式返回給客戶端

常見請求頭 描述
Location 指定響應的路徑,需要與狀態碼302配合使用,完成跳轉。
Content-Type 響應正文的型別(MIME型別)。 取值:text/html;charset=UTF-8
Content-Disposition 通過瀏覽器以下載方式解析正文。 取值:attachment;filename=xx.zip
Set-Cookie 與會話相關技術。伺服器向瀏覽器寫入cookie
Content-Encoding 伺服器使用的壓縮格式。 取值:gzip
Content-length 響應正文的長度
Refresh 定時重新整理,格式:秒數;url=路徑。url可省略,預設值為當前頁。取值:3;url=www.itcast.cn //三秒重新整理頁面到www.itcast.cn
Server 指的是伺服器名稱,預設值:Apache-Coyote/1.1。可以通過conf/server.xml配置進行修改。< Connector port=”8080” … server=”itcast”/>
Last-Modified 伺服器通知瀏覽器,檔案的最後修改時間。與If-Modified-Since一起使用。

3)響應體
響應體是伺服器回寫給客戶端的頁面正文,瀏覽器將正文載入到記憶體,然後解析渲染 顯示頁面內容