1. 程式人生 > 其它 >狂神Java Web (三)HTTP詳解

狂神Java Web (三)HTTP詳解

HTTP協議

1. 什麼是HTTP

HTTP(超文字傳輸協議)是一個簡單的請求-響應協議,通常執行在TCP之上。

  • 文字:HTML,字串,
  • 超文字:圖片、音樂、視訊、定位、地圖
  • 預設埠:80 (HTTPS:443)

2. 兩個時代

  • HTTP 1.0
    • HTTP/1.0
    • 客戶端可以與web服務端連線後,只能獲得一個web資源,斷開連線
  • HTTP 2.0
    • HTTP/1.1
    • 客戶端與伺服器端連線後,可以獲得多個web資源

3. HTTP請求

  • 客戶端 - 發請求(Request) - 伺服器
    百度:
Request URL: https://www.baidu.com/index.html # 請求地址
Request Method: GET # get/post方法
Status Code: 200 OK # 狀態碼 200
Remote Address: 36.152.44.96:443 # 遠端地址
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8

請求行:

  • 請求行中的請求方式:GET
  • 請求方式:Get / Post / HEAD / DELETE / PUT ...
    • get:一次請求能夠攜帶的引數比較少,大小有限制,會在瀏覽器的URL位址列顯示資料內容。不安全,但高效。
    • post:請求能夠攜帶的引數沒有限制,大小無限制,不會在瀏覽器URL中顯示,安全,不夠高效。

訊息頭:

  • Accept: 告訴瀏覽器支援的資料型別
  • Accept-Encoding: 支援哪種編碼格式 GBK UTF-8 GB2312 ISO-8859-1
  • Accept-Language: 告訴瀏覽器的語言環境
  • Cache-Control: 快取控制
  • Connection: 告訴瀏覽器,請求完之後斷開還是保持連線
  • HOST: 主機

4. HTTP響應

  • 伺服器 - 響應 - 客戶端

百度:

Cache-Control: private # 快取控制
Connection: keep-alive # 保持連線
Content-Encoding: gzip 
Content-Type: text/html;charset=utf-8

響應體:

  • Accept: 告訴瀏覽器支援的資料型別
  • Accept-Encoding: 支援哪種編碼格式 GBK UTF-8 GB2312 ISO-8859-1
  • Accept-Language: 告訴瀏覽器的語言環境
  • Cache-Control: 快取控制
  • Connection: 告訴瀏覽器,請求完之後斷開還是保持連線
  • HOST: 主機
  • Refresh: 告訴客戶端,多久重新整理一次
  • Location: 讓網頁重新定位

響應狀態碼:

  • 200 :請求響應成功
  • 3xx :請求重定向
  • 4xx :找不到資源 (資源不存在) 404
  • 5xx :伺服器程式碼錯誤 500 , 502(閘道器錯誤)