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

JavaWeb中的Http協議請求和響應

1:HTTP的定義

HTTP是hypertext transfer protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議

用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程

客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,HTTP協議用於定義客戶端與web伺服器通迅的格式。

HTTP現有兩個版本:HTTP/1.0、HTTP/1.1

在HTTP1.0協議中,客戶端與web伺服器建立連線後,只能獲得一個web資源。
在HTTP1.1協議,允許客戶端與web伺服器建立連線後,在一個連線上獲取多個web資源。

2:HTTP請求:

一個客戶端連線到伺服器端的時候,  當向伺服器端發出請求web資源的時候,  稱之為客戶端向伺服器端發出了一個HTTP請求

一個完整的HTTP請求包括:  一個請求行、請求頭、請求體

1:請求行:(以 / 劃分開來)

請求行

①是請求方法,GET和POST是最常見的HTTP方法,除此以外還包括DELETE、HEAD、OPTIONS、PUT、TRACE。

②為請求對應的URL地址,它和報文頭的Host屬性組成完整的請求URL。

③是協議名稱及版本號

請求頭:

④是HTTP的報文頭,報文頭包含若干個屬性,格式為“屬性名:屬性值”,服務端據此獲取客戶端的資訊。

與快取相關的規則資訊,均包含在header中

請求體:

⑤是報文體,它將一個頁面表單中的元件值通過param1=value1&param2=value2的鍵值對形式

編碼成一個格式化串,它承載多個請求引數的資料。不但報文體可以傳遞請求引數,請求URL也可以通過類似於“/chapter15/user.html? param1=value1&param2=value2”的方式傳遞請求引數。 

一些常見的HTTP請求解釋:

1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, 
2     application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
3 Referer: http://localhost:8080/JavaWebDemoProject/Web/2.jsp
4 Accept-Language: zh-CN
5 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)
6 Accept-Encoding: gzip, deflate
7 Host: localhost:8080
8 Connection: Keep-Alive

HTTP請求中的常用訊息頭

  accept:瀏覽器通過這個頭告訴伺服器,它所支援的資料型別
  Accept-Charset: 瀏覽器通過這個頭告訴伺服器,它支援哪種字符集
  Accept-Encoding:瀏覽器通過這個頭告訴伺服器,支援的壓縮格式
  Accept-Language:瀏覽器通過這個頭告訴伺服器,它的語言環境
  Host:瀏覽器通過這個頭告訴伺服器,想訪問哪臺主機
  If-Modified-Since: 瀏覽器通過這個頭告訴伺服器,快取資料的時間
  Referer:瀏覽器通過這個頭告訴伺服器,客戶機是哪個頁面來的  防盜鏈
  Connection:瀏覽器通過這個頭告訴伺服器,請求完後是斷開連結還是何持連結

3:HTTP響應

當伺服器端收到HTTP請求時,會做出一定的處理後返回給客戶端一個HTTP響應

①報文協議及版本; 
②狀態碼及狀態描述;

和請求報文相比,響應報文多了一個“響應狀態碼”,它以“清晰明確”的語言告訴客戶端本次請求的處理結果。同時狀態碼分為5類:

   
③響應報文頭,也是由多個屬性組成; 

一些常見的報文頭解釋:

HTTP響應中的常用響應頭(訊息頭)
  Location: 伺服器通過這個頭,來告訴瀏覽器跳到哪裡
  Server:伺服器通過這個頭,告訴瀏覽器伺服器的型號
  Content-Encoding:伺服器通過這個頭,告訴瀏覽器,資料的壓縮格式
  Content-Length: 伺服器通過這個頭,告訴瀏覽器回送資料的長度
  Content-Language: 伺服器通過這個頭,告訴瀏覽器語言環境
  Content-Type:伺服器通過這個頭,告訴瀏覽器回送資料的型別
  Refresh:伺服器通過這個頭,告訴瀏覽器定時重新整理
  Content-Disposition: 伺服器通過這個頭,告訴瀏覽器以下載方式打資料
  Transfer-Encoding:伺服器通過這個頭,告訴瀏覽器資料是以分塊方式回送的
  Expires: -1  控制瀏覽器不要快取
  Cache-Control: no-cache  
  Pragma: no-cache


④響應報文體,即我們真正要的請求內容