1. 程式人生 > 其它 >JavaWeb開發之HTTP協議

JavaWeb開發之HTTP協議

  何為HTTP協議?HTTP中文名稱為超文字傳輸協議,是網際網路上應用最為廣泛的一種網路協議,作為約束HTTP請求與HTTP響應的規則;HTTP協議主要由Http請求和Http響應兩部分組成,注意請求與響應都是成對存在的;

  如何傳送HTTP請求?HTTP請求的傳送方式主要有以下幾種:
  1、通過瀏覽器的位址列(輸入網址的地方)

  2、通過HTML當中的form表單標籤

  3、通過HTML中a標籤中的href屬性

  4、通過HTML中img標籤的src屬性

  上面提到了HTTP協議主要由Http請求和Http響應兩部分組成,那麼Http請求和Http響應又是由什麼組成的呢?
  Http請求主要由請求行、請求頭、請求體三部分組成;
  請求行由請求方式、請求的資源、協議版本組成 ,例如GET /index.html?username=zs&pwd=123456 HTTP/1.1就是一個簡單的請求行,其中GET為請求方式,/index.html?username=zs&pwd=123456為請求的資源,HTTP/1.1為協議版本;說到協議版本,協議版本又分為HTTP/1.0和HTTP/1.1,HTTP/1.0是傳送請求,建立一次連線,獲得一個web資源,連線斷開;HTTP/1.1是傳送請求,建立一次連線,獲得多個web資源,保持連線;

  請求頭主要是客戶端瀏覽器發給遠端伺服器的一些資訊,用鍵值對key:value表示,下面列舉一些常見的請求頭:
  Cookie:用於存放瀏覽器從遠端伺服器上快取下來的cookie資訊
  Content-Length:代表的是請求體的長度
  Content-Type:如果是POST請求時請求頭中會有這個資訊,預設值為application/x-www-form-urlencoded,表示請求體內容使用url編碼
  Referer:主要是瀏覽器訪問遠端伺服器時會通過這個資訊告知伺服器當前請求來自何處,如果是直接訪問而不是跳轉訪問的話,則不會有這個頭;通常用於作為防盜鏈
  If-Modified-Since:主要用於瀏覽器告知遠端伺服器本地快取的最後變更時間
  User-Agent:主要用於瀏覽器告知遠端伺服器關於瀏覽器自己和作業系統的相關資訊
  Connection:瀏覽器和遠端伺服器當前的連線狀態,Keep-Alive表示連線中,Close表示已關閉
  Host:瀏覽器請求的遠端web伺服器的主機名
  Accept:瀏覽器告知遠端伺服器它所支援的MIME型別
  Accept-Encoding:瀏覽器告知遠端伺服器它所支援的資料壓縮格式,如:GZIP壓縮等
  Accept-Language:瀏覽器告知遠端伺服器它所支援的語言

  請求體:當請求方式是POST時,請求體中包含有請求的引數;如果請求方式為GET,那麼請求引數不會出現在請求體中,會拼接在url地址後面,例如GET /index.html?username=zs&pwd=123456 HTTP/1.1中?後面的username=zs&pwd=123456就是請求引數

  Http請求示意圖:
    
  
  Http響應主要由響應行、響應頭、響應體三部分組成;
  響應行由協議版本和狀態碼組成,格式為:HTTP/1.1 200 OK,以下為常見的狀態碼:
  200 :請求成功
  302 :請求重定向
  304 :請求資源沒有改變,訪問本地快取
  404 :請求資源不存在,通常是使用者路徑編寫錯誤,也可能是遠端伺服器資源已刪除
  500 :遠端伺服器內部錯誤,通常程式拋異常

  響應頭主要是遠端伺服器響應給客戶端瀏覽器的一些資訊,用鍵值對key:value表示,下面列舉一些常見的響應頭:
  Location:指定響應的路徑,需要與狀態碼302配合使用,完成請求重定向的跳轉
  Content-Type:響應體的型別(MIME型別)
  Content-Disposition:客戶端瀏覽器以下載的方式解析正文
  Set-Cookie:遠端伺服器向客戶端瀏覽器寫入的cookie資訊
  Content-Encoding:遠端伺服器使用的壓縮格式
  Content-length:代表的是響應體的長度
  Server:遠端伺服器名稱
  Last-Modified:遠端伺服器告知瀏覽器它上面檔案的最後修改時間

  響應體主要是伺服器響應給客戶端瀏覽器的頁面正文

  Http響應示意圖: