HTTP request 和 response 的結構詳解


HTTP 的報文結構

編輯一個form.html的表單頁面,如下:

點擊提交按鈕,抓包如下。如何通過瀏覽器查看 request 與 response 的結構請看這篇:如何通過瀏覽器查看 request 與 response 的結構 - 拾月凄辰 - 博客園 (cnblogs.com)

HTTP request 的結構

1)請求行

請求方式:POST、GET

請求的資源:/DemoEE/form.html

協議版本:HTTP/1.1

HTTP/1.0,發送請求,創建一次連接,獲得一個web資源,連接斷開。

HTTP/1.1,發送請求,創建一次連接,獲得多個web資源,保持連接。

2)請求頭 (Request Header)

請求頭是客戶端發送給服務器端的一些信息,使用鍵值對表示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格式:大類型/小類型[;參數]

例如:

   text/html ,html文件

   text/css,css文件

   text/javascript,js文件

   image/*,所有圖片文件

Accept-Encoding

瀏覽器通知服務器,瀏覽器支持的數據壓縮格式。如:GZIP壓縮

Accept-Language

瀏覽器通知服務器,瀏覽器支持的語言。各國語言(國際化i18n)

 

3)請求體(Request Body)

當請求方式是post的時,請求體會有請求的參數,格式如下:

username=zhangsan&password=123

如果請求方式為get,get請求沒有請求體,請求參數不會出現在請求體中,而是會拼接在url地址后面:

http://localhost:8080...?username=zhangsan&password=123

HTTP response 的結構

1)響應行

Http協議

狀態碼:

常用的狀態碼如下:

200 :請求成功。

302 :請求重定向。

304 :請求資源沒有改變,訪問本地緩存。

404 :請求資源不存在。通常是用戶路徑編寫錯誤,也可能是服務器資源已刪除。

500 :服務器內部錯誤。通常程序拋異常。

狀態信息:狀態信息是根據狀態碼變化而變化的

2)響應頭 (Response Header)

響應也都是鍵值對形式,服務器端將信息以鍵值對的形式返回給客戶端

常見請求頭

描述

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)響應體(Request Body)

響應體是服務器回寫給客戶端的頁面正文,瀏覽器將正文加載到內存,然后解析渲染     顯示頁面內容

 

參考文章

本文源自:黑馬程序員JavaEE就業班32期 - WEB12_Http&Tomcat 的筆記

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM