首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

HTTP 協議深度解析:請求、響應與狀態碼全攻略

     編輯:Java 綜合教學

HTTP 協議核心結構

HTTP(HyperText Transfer Protocol)是 Web 應用的基石,採用請求-響應模型。本文系統梳理 HTTP 請求行、請求頭、響應頭及狀態碼,助你快速掌握協議細節。

請求行

請求行包含三部分:請求方法、請求資源路徑、協議版本。例如:

GET /taoshihan/p/5346731.html HTTP/1.1
  • 請求方法:GET、POST、DELETE、PUT、HEAD、OPTIONS、TRACE 等。GET 請求參數長度通常限制在 1KB 左右,POST 無此限制。
  • 資源路徑:目標資源在服務器上的位置。
  • 協議版本:如 HTTP/1.1、HTTP/2.0。

請求頭

請求頭以鍵值對形式傳遞客戶端信息、緩存控制、接受內容類型等。常見字段:

字段示例說明
Hostwww.cnblogs.com目標主機名
Connectionkeep-alive連接保持模式
Pragma / Cache-Controlno-cache禁用緩存
Accepttext/html, application/xhtml+xml...可接受的 MIME 類型
User-AgentMozilla/5.0 ... Chrome/45.0...客戶端瀏覽器信息
Refererhttps://zzk.cnblogs.com/...請求來源頁面
Accept-Encodinggzip, deflate, sdch支援的壓縮編碼
Accept-Languagezh-CN, zh;q=0.8偏好語言

響應頭

服務器返回的響應頭包含狀態行與元數據:

HTTP/1.1 200 OK
Date: Thu, 19 May 2016 03:47:48 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Cache-Control: private, max-age=10
Expires: Thu, 19 May 2016 03:47:58 GMT
Last-Modified: Thu, 19 May 2016 03:47:48 GMT
X-UA-Compatible: IE=10
Content-Encoding: gzip
  • 狀態行:協議版本、狀態碼、原因短語。
  • Content-Type:響應體媒體類型與字符集。
  • Transfer-Encoding: chunked:分塊傳輸,適用於動態生成內容。
  • 緩存控制:Cache-Control、Expires、Last-Modified 協同控制瀏覽器緩存策略。
  • Content-Encoding: gzip:響應體經 GZIP 壓縮。

HTTP 狀態碼分類

範圍含義常見代碼
200~299成功200 OK、201 Created、204 No Content
300~399重定向301 永久移動、302 臨時重定向、304 Not Modified(走緩存)、307 臨時重定向(保持方法)
400~499客戶端錯誤400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found
500~599服務端錯誤500 Internal Server Error、502 Bad Gateway、503 Service Unavailable

理解這些細節,能幫助你排查網絡問題、優化 API 設計、配置緩存策略,是 Java EE 開發者的必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved