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¶m2=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
④響應報文體,即我們真正要的請求內容