1. 程式人生 > >java 之 HTTP協議

java 之 HTTP協議

HTTP簡介

WEB瀏覽器與WEB伺服器之間的一問一答的互動過程必須遵循一定的規則,這個規則就是HTTP協議。
HTTP是HyperText Transfer Protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程及資料本身的格式。
HTTP協議的版本
    HTTP/1.0、HTTP/1.1
HTTP協議是學習JavaWEB開發的基石,不深入瞭解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些複雜的WEB站點。

HTTP1.0的基本執行方式

這裡寫圖片描述

瀏覽器訪問多圖網頁

在一個HTML頁面中如果包含<img>標記的話,當瀏覽器解析到這些標記時,還會向伺服器請求訪問標記中指定的檔案,即再次建立連線併發出HTTP請求。
如果HTML頁面中有一個超級連結:
    <a href=”http://www.baidu.com”>itcast</a>,當點選這個連結時,也會觸發瀏覽器與Web伺服器開始一次新的HTTP通訊。

HTTP1.1與HTTP1.0的比較

這裡寫圖片描述

HTTP請求訊息

這裡寫圖片描述

HTTP響應訊息

這裡寫圖片描述

HTTP訊息頭(請求和響應共性)

使用訊息頭,可以實現HTTP客戶機與伺服器之間的條件請求和應答,訊息頭相當於伺服器和瀏覽器之間的一些暗號指令。
每個訊息頭包含一個頭欄位名稱,然後依次是冒號、空格、值、回車和換行符
    如: Accept-Encoding: gzip, deflate
訊息頭欄位名是不區分大小寫的,但習慣上講每個單詞的第一個字母大寫。
整個訊息頭部分中的各行訊息頭可按任何順序排列。
訊息頭又可分為通用資訊頭、請求頭、響應頭、實體頭等四類
許多請求頭欄位都允許客戶端在值部分指定多個可接受的選項,多個選項之間以逗號分隔。
有些頭欄位可以出現多次,例如,響應訊息中可以包含有多個”Warning”頭欄位。

HTTP請求的細節——請求行

![這裡寫圖片描述](https://img-blog.csdn.net/20161119155257764)

HTTP響應的細節——狀態行

這裡寫圖片描述

HTTP響應的細節——常用狀態碼

200(正常)
表示一切正常,返回的是正常請求結果
302/307(臨時重定向)
指出被請求的文件已被臨時移動到別處,此文件的新的URL在Location響應頭中給出。
304(未修改)
表示客戶機快取的版本是最新的,客戶機可以繼續使用它,無需到伺服器請求。
404(找不到)
伺服器上不存在客戶機所請求的資源。
500(伺服器內部錯誤)
伺服器端的程式發生錯誤

HTTP請求的細節——請求頭1

    請求頭欄位用於客戶端在請求訊息中向伺服器傳遞附加資訊,主要包括客戶端可以接受的資料型別(MIME型別)、壓縮方法、語言以及發出請求的超連結所屬頁面的URL地址等資訊。
常用請求頭:
    Accept:瀏覽器可接受的MIME型別 
    Accept-Charset: 瀏覽器通過這個頭告訴伺服器,它支援哪種字符集
    Accept-Encoding:瀏覽器能夠進行解碼的資料編碼方式,比如gzip 
    Accept-Language:瀏覽器所希望的語言種類,當伺服器能夠提供一種以上的語言版本時要用到。 可以在瀏覽器中進行設定。
    Host:初始URL中的主機和埠 
    Referer:包含一個URL,使用者從該URL代表的頁面出發訪問當前請求的頁面 
    Content-Type:內容型別

HTTP請求的細節——請求頭2

If-Modified-Since: Wed, 02 Feb 2011 12:04:56 GMT利用這個頭與伺服器的檔案進行比對,如果一致,則從快取中直接讀取檔案。
User-Agent:瀏覽器型別.
Content-Length:表示請求訊息正文的長度 
Connection:表示是否需要持久連線。如果伺服器看到這裡的值為“Keep -Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1預設進行持久連線 
Cookie:這是最重要的請求頭資訊之一 
Date:Date: Mon, 22 Aug 2011 01:55:39 GMT請求時間GMT

HTTP響應細節——常用響應頭1

響應頭欄位用於向客戶端傳遞附加資訊
常用響應頭
    Location: http://www.it315.org/index.jsp指示新的資源的位置
    Server:apache tomcat指示伺服器的型別
    Content-Encoding: gzip伺服器傳送的資料採用的編碼型別
    Content-Length: 80 告訴瀏覽器正文的長度
    Content-Language: zh-cn服務傳送的文字的語言
    Content-Type: text/html; charset=GB2312伺服器傳送的內容的MIME型別
    Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT檔案的最後修改時間
    Refresh: 1;url=http://www.it315.org指示客戶端重新整理頻率。單位是秒

HTTP響應細節——常用響應頭2

Content-Disposition: attachment; filename=aaa.zip指示客戶端下載檔案
Set-Cookie:SS=Q0=5Lb_nQ; path=/search伺服器端傳送的Cookie
Expires: -1
Cache-Control: no-cache (1.1)  
Pragma: no-cache   (1.0)
Connection: close/Keep-Alive   
Date: Tue, 11 Jul 2000 18:23:51 GMT