天天看點

重溫Http協定--請求封包和響應封包請求封包(request message)響應封包(response message)

  http協定是位于應用層的協定,我們在日常浏覽網頁比如在導航網站請求百度首頁的時候,會先通過http協定把請求做一個類似于編碼的工作,發送給百度的伺服器,然後在百度伺服器響應請求時把相應的内容再通過http協定做一個類似于解碼的工作,這樣浏覽器才能了解這個資料,然後為我們展示出來百度首頁.

  這相當于是一種規範,網絡中資料的傳輸在位于應用之下的各層(傳輸層,應用層)來完成的,在tcp/ip協定接收到資料時,我們是不能直接使用和浏覽的,需要先通過一種規範來進行梳理,也就是解碼,得到浏覽器支援的一種格式,才能被我們使用.

  在web開發中,熟悉http協定中的封包結構是很重要的,比如,如果對http封包不熟悉,在使用httpServletRequest很多方法的時候,就會陷入懵逼.

  http封包分為請求封包和響應封包.

請求封包(request message)

  請求封包分為三部分:首行,請求頭,請求體.

  首行包括:請求類型,URL,HTTP版本.

  請求頭部儲存一些鍵值對的屬性.

  請求體儲存具體内容,一般為POST類型的參數.

  

重溫Http協定--請求封包和響應封包請求封包(request message)響應封包(response message)

常見的HTTP請求頭屬性

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

  Accept:告訴服務端,該請求所能支援的響應資料類型,專業術語稱為MIME 類型,上圖中表示支援text/html的響應格式.

  擴充:text/html,application/xhtml+xml,application/xml 都是 MIME 類型,也可以稱為媒體類型和内容類型,斜杠前面的是 type(類型),斜杠後面的是 subtype(子類型)

Cookie:seraph.confluence=6389808%3A04c906749aac37bbfe595ff3149ac5c17bfcd298;Hm_lvt_4a7d8ec50cfd6af753c4f8aee3425070=1477401172,1479201037,1479895114; _ga=GA1.2.1021401543.1477401172; JSESSIONID=6C331887C562AF7839384C41D590CA9A;

  Cookie:将用戶端的cookie放在請求頭裡一并發送給伺服器端.

  這裡就出了一個問題,網站A怎麼保證自己請求體中儲存的cookie就是網站A的cookie而不是網站B的cookie呢,這就和cookie裡面的jsessionid有關系了,關于cookie,session,sessionid,jsessionid的差別聯系,可以參考這個博文

http://www.cnblogs.com/fnng/archive/2012/08/14/2637279.html
referer:https://www.baidu.com/linkurl=fjKPqTaoZV2a2g2H2kbBwdz0mgBgI06WLrVLrQhiKgu&wd=&eqid=841d77d20000a7ae00000004586b7070

  Referer:表示這個請求是從哪個url跳過來的,通過百度來搜尋淘寶網,那麼在進入淘寶網的請求封包中,Referer的值就是:www.baidu.com

  Cache-Control:max-age=0

  Cache-control:對服務端傳回的相應内容進行緩存控制,即是否需要在用戶端儲存下來,如上表示不緩存.

  User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36

  User-Agent:使用者代理,簡稱 UA,是一個特殊字元串頭,使得伺服器能夠識别用戶端使用的作業系統及版本、CPU 類型、浏覽器及版本、浏覽器渲染引擎、浏覽器語言、浏覽器插件等資訊

  Connection:keep-alive

  Connection:表示用戶端與服務連接配接類型;Keep-Alive表示持久連接配接

  更多請求頭屬性可以參考這篇文章:

HTTP響應頭和請求頭資訊對照表

響應封包(response message)

  響應封包也由三部分組成,首行,響應頭,響應體.

  首行分為封包協定及版本,響應碼及狀态描述

重溫Http協定--請求封包和響應封包請求封包(request message)響應封包(response message)

  狀态碼

1XX:資訊性狀态碼

2XX:成功狀态碼,200 表示成功

3XX:重定向狀态碼

4XX:用戶端錯誤狀态碼,404表示沒有找到請求的資源

5XX:伺服器端錯誤狀态碼,500表示内部錯誤

  關于響應封包的響應頭屬性,可以詳見上面那個對照表連結.

  需要提一下的是,我們可以通過HttpServletResponse的setHeader()方法來自行添加響應頭屬性.

繼續閱讀