Java學習第一百二十一部分——HTTP

目錄

一、前言簡介

二、核心特性

三、通信基礎結構

四、關鍵組件詳解

五、性能演進——版本對比

六、開發者建議??

七、總結歸納


一、前言簡介

? ? ? ?HTTP(“H”yper“t”ext “T”ransfer “P”rotocol,超文本傳輸協議)是互聯網上應用最廣泛的應用層協議,用于在客戶端(如瀏覽器)和服務器之間傳輸超文本(如網頁)及其他資源。

二、核心特性

1. 無狀態協議 (Stateless)?

  • 每個請求獨立處理,服務器不保存客戶端之前的請求狀態。 ?

  • 解決方案:使用 Cookies、Session?或 Token?維持會話狀態(如登錄態)。

2. 請求-響應模型 (Request-Response)?

  • 客戶端發起請求 → 服務器返回響應(含狀態碼、頭、數據)。

3. 基于文本的協議 (早期)

  • HTTP/1.x 使用明文傳輸請求頭和數據(可讀性強,但效率低)。 ?

  • HTTP/2+ 改用二進制分幀提升性能。

4. 可擴展性??

  • 支持自定義請求頭(如 `Authorization: Bearer token`)和響應頭。

三、通信基礎結構

[客戶端 Client]------>發送HTTP請求------>[服務器 Server]

[服務器 Server]------>返回HTTP響應------>[客戶端 Client]

請求組成:

  • 請求行(方法 + URL + HTTP版本,如 `GET /index.html HTTP/1.1`) ?

  • 請求頭(元數據,如 `User-Agent`, `Accept-Language`) ?

  • 請求體(可選,如 POST 提交的表單數據)

響應組成:

  • 狀態行(版本 + 狀態碼 + 描述,如 `HTTP/1.1 200 OK`) ?

  • 響應頭(元數據,如 `Content-Type: text/html`) ?

  • 響應體(資源數據,如 HTML 內容)

四、關鍵組件詳解

1. URL(統一資源定位符)?

  • 格式:`https://www.example.com:443/path?query=value#fragment` ?

  • 組成:協議 `https` + 域名 `www.example.com` + 端口 `443` + 路徑 `/path` + 查詢參數 `?query=value` + 錨點 `#fragment`

2. HTTP 主要方法(Methods)

GET

  • 語義:請求指定資源的表示。只應用于獲取數據,不應產生副作用。

  • 特點:安全、冪等。數據通過URL查詢字符串傳遞。

  • 示例:獲取網頁、圖片、API數據。

POST

  • 語義:向指定資源提交數據(通常會導致服務器端狀態變化或產生副作用,如創建新資源)。

  • 特點:不安全、不冪等。數據通常放在請求體中。

  • 示例:提交表單、上傳文件、創建訂單。

PUT

  • 語義:替換目標資源的所有當前表示(完整更新)。如果資源不存在,可能由服務器創建(需約定)。

  • 特點:不安全、冪等。數據放在請求體中。

  • 示例:更新用戶個人資料(全部字段)。

DELETE

  • 語義:刪除指定的資源。

  • 特點:不安全、冪等。

  • 示例:刪除一篇文章、一個用戶。

PATCH

  • 語義:對資源應用部分修改。

  • 特點:不安全、不冪等(取決于修改類型,但通常視為不冪等)。數據(描述如何修改)放在請求體中。

  • 示例:更新用戶郵箱(只需發送郵箱字段)。

HEAD

  • 語義:與GET相同,但服務器只返回響應頭,不返回響應體。

  • 特點:安全、冪等。用于獲取資源的元信息(如檢查資源是否存在、檢查修改時間Last-Modified/ETag用于緩存)。

  • 示例:檢查鏈接有效性、獲取文件大小但不下載。

OPTIONS

  • 語義:獲取目標資源支持的通信選項(允許的方法等)。

  • 特點:安全、冪等。常用于CORS預檢請求。

  • 示例:瀏覽器在發送跨域PUT請求前,先發OPTIONS請求詢問服務器是否允許。

CONNECT

  • 語義:建立到目標資源標識的服務器的隧道(通常用于通過代理建立SSL/TLS連接)。

  • 特點:特殊用途。

  • 示例:通過代理建立HTTPS連接。

TRACE

  • 語義:沿著到目標資源的路徑執行一個消息環回測試(主要用于診斷)。

  • 特點:安全、冪等。出于安全考慮,現代瀏覽器通常禁用。

  • 示例:調試網絡請求路徑。

📌 方法關鍵特性總結

HTTP 方法安全方法 (Safe)冪等方法 (Idempotent)常用方法 (Common)通常有請求體 (Request Body)CORS 相關角色 (CORS Role)
GET? 是? 是? 是? 否簡單請求 / 觸發預檢
HEAD? 是? 是? 有時? 否簡單請求 / 觸發預檢
POST? 否? 否? 是? 是非簡單請求 / 觸發預檢
PUT? 否? 是? 是? 是非簡單請求 / 觸發預檢
PATCH? 否? 通常不是? 是? 是非簡單請求 / 觸發預檢
DELETE? 否? 是? 是? 通常沒有非簡單請求 / 觸發預檢
OPTIONS? 是? 是? 有時? 通常沒有在預檢請求中至關重要
TRACE? 是? 是? 否? 否簡單請求 / 觸發預檢
  • 安全方法 (Safe):?指不會修改服務器狀態的方法。

  • 冪等方法 (Idempotent):?指執行一次與執行多次效果相同的方法(服務器狀態最終一致)。

  • 常用方法 (Common):?指在構建 RESTful API 或常規 Web 開發中最常使用的方法。

  • 通常有請求體 (Request Body):?指該方法在請求中通常會攜帶數據負載(請求體)

  • CORS 相關角色 (CORS Role):OPTIONS:?在 CORS 機制中扮演核心角色。瀏覽器在發送可能產生副作用的跨域請求前,會自動發送一個?OPTIONS?請求(預檢請求)到目標服務器,以詢問實際請求(POST,?PUT,?DELETE,?PATCH?等)是否被允許。服務器通過?OPTIONS?響應的 CORS 頭來告知瀏覽器后續請求能否繼續。

3. 狀態碼(Status Codes)??

`1xx`:信息性狀態?

`2xx`:成功 ?

  • `200 OK`:請求成功 ?

  • `201 Created`:資源已創建(配合 POST/PUT) ?

`3xx`:重定向 ?

  • `301 Moved Permanently`:永久重定向 ?

  • `302 Found`:臨時重定向 ?

`4xx`:客戶端錯誤 ?

  • `400 Bad Request`:請求語法錯誤 ?

  • `401 Unauthorized`:未認證 ?

  • `403 Forbidden`:無權限 ?

  • `404 Not Found`:資源不存在 ?

`5xx`:服務器錯誤 ?

  • `500 Internal Server Error`:服務器內部錯誤 ?

  • `503 Service Unavailable`:服務不可用 ?

4. 頭部字段(Headers)

常用請求頭: ?

  • `Host: example.com`:目標域名(HTTP/1.1 必需) ?

  • `User-Agent`: 客戶端標識?

  • `Cookie: name=value`:發送 cookies ?

  • `Authorization: Bearer xxxx`:身份憑證 ?

常用響應頭: ?

  • `Set-Cookie: name=value`:設置 cookies ?

  • `Content-Type: text/html; charset=utf-8`:響應數據類型 ?

  • `Cache-Control: max-age=3600`:緩存控制 ?

五、性能演進——版本對比

特性HTTP/0.9 (1991)HTTP/1.0 (1996 - RFC 1945)HTTP/1.1 (1997/1999 - RFC 2068/2616)HTTP/2 (2015 - RFC 7540)HTTP/3 (2022 - RFC 9114)
核心模型單請求單響應,無頭單請求單響應持久連接,管道化(理論)多路復用,二進制幀基于QUIC的多路復用
連接方式每個請求后關閉TCP連接默認關閉連接 (Connection: close)默認持久連接?(Connection: keep-alive)單一持久TCP連接基于UDP的QUIC連接
頭部傳輸無頭部純文本頭部純文本頭部 (可能重復、冗長)HPACK頭部壓縮QPACK頭部壓縮
數據傳輸僅響應體(無格式信息)響應體響應體,分塊傳輸(Transfer-Encoding: chunked)二進制分幀二進制分幀
服務器推送? 不支持? 不支持? 不支持? 支持?(主動推送資源)? 支持
請求優先級? 不支持? 不支持? 不支持? 支持? 支持
隊頭阻塞問題嚴重 (每個請求新連接)嚴重 (每個請求新連接)TCP層HOL阻塞?(管道化難實現)流級別HOL阻塞?(TCP層仍存在)? 基本消除?(QUIC流獨立)
主要優勢極簡引入了元數據(頭)性能提升(持久連接),緩存、Host頭等性能飛躍(多路復用、頭部壓縮、推送)極致性能(消除TCP HOLB),更快連接建立
主要劣勢功能極其有限連接開銷巨大HOL阻塞限制性能TCP層仍存在HOL阻塞部署復雜度高,UDP可能被網絡設備限制
當前狀態完全廢棄基本廢棄廣泛使用(尤其老系統/簡單場景)主流版本快速增長

> HTTP/3 核心優勢: ?

> 解決 TCP 隊頭阻塞,抗丟包能力更強 ?

> 0-RTT/1-RTT 快速連接(尤其弱網環境) ?

> 連接遷移(切換網絡 IP 不斷連)

六、開發者建議??

  • 新項目優先啟用 HTTP/2/3 + HTTPS

  • API 設計嚴格遵循方法語義(如 `GET` 只讀、`PUT` 冪等) ?

  • 利用緩存頭(`Cache-Control`, `ETag`)優化性能

七、總結歸納

  • 基礎角色:Web 通信的基石,定義客戶端與服務器的交互規則。 ?

  • 核心痛點解決:

    ? - 無狀態 → 通過 Cookie/Session 管理狀態 ?

    ? - 性能瓶頸 → HTTP/2 多路復用、HTTP/3 QUIC 協議 ?

    ? - 安全性 → HTTPS 加密傳輸? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

  • 應用場景:網頁瀏覽、API 交互(RESTful)、文件傳輸、實時通信(WebSocket 基于 HTTP 升級)等。 ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92975.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92975.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92975.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記錄RK3588的docker中啟動rviz2報錯

安裝好rk3588 的docker,pull了ros的完整鏡像后,想要啟動rviz但是報錯,下面是我的踩坑記錄 0.原始的啟動鏡像的腳本: sudo docker run -it --rm --privileged --nethost -e DISPLAY$DISPLAY --namemy_image_name \-e DISPLAY$DIS…

ThingJS 新手學習技巧

一、ThingJS 基礎認知 1.1 ThingJS 是什么 ThingJS 是一款基于 WebGL 技術的 3D 可視化開發平臺,它為開發者提供了簡單易用的 API 和豐富的 3D 場景組件,讓開發者能夠快速構建出高質量的 3D 可視化應用。無論是智慧園區、智慧樓宇、智慧交通還是工業監…

【軟考架構】需求工程中,系統分析與設計的結構化方法

結構化方法誕生于20世紀70年代,是為了應對當時日益復雜的軟件系統開發挑戰(如“軟件危機”)而提出的。它強調系統性、規范性、分解和抽象,目標是提高軟件開發的效率、質量和可維護性,降低復雜性。 核心思想&#xff1a…

FPGA常用資源之IO概述

目錄 一、前言 二、I/O資源 2.1 I/O端口資源 2.1.1 IOB 2.1.2 ILOGIC/OLOGIC 2.2 ZHOLD 2.3 IDDR/ODDR 2.4 IDELAY 2.5 ISERDES/OSERDES 2.6 IO Logic Resource連接 2.7 Device示意圖 三、工程示例 3.1 工程代碼 3.2 Device結果 一、前言 FPGA芯片從內部結構看主…

密集遮擋場景識別率↑31%!陌訊輕量化部署方案在智慧零售的實戰解析

一、零售業痛點:當技術遇上客流洪流據《2024智慧零售技術白皮書》統計,高峰期超市顧客密度超3人/㎡時,??目標漏檢率高達48%??。核心挑戰包括:??動態遮擋??:購物車/貨架造成的持續性目標截斷??計算瓶頸??&a…

力扣(O(1) 時間插入、刪除和獲取隨機元素)

一、題目分析(一)功能需求 我們需要實現 RandomizedSet 類,包含以下功能: RandomizedSet():初始化數據結構。bool insert(int val):當元素 val 不存在時,插入該元素并返回 true;若已…

前端開發的面試自我介紹與準備

前端面試自我介紹不知道怎么說的,直接參考下面的模板,然后換成你的經歷 自我介紹控制在1分鐘左右,千萬不要說的太久,面試官會煩的,但是又不好意思打斷你 切記面試是人和人面對面的交流,要有,面試…

10、系統規劃與分析

一、系統規劃步驟系統規劃步驟對現有系統進行初步調查分析和確定系統目標分析子系統的組成和基本功能擬定系統的實施方案擬定系統的可行性研究指定系統建設方案系統規劃階段的產出物:可行性研究報告、系統設計任務書。習題1、擬定系統的實施方案是在系統規劃階段完成…

Nginx學習筆記(六)—— Nginx反向代理

📚Nginx學習筆記(六)—— Nginx反向代理 📌 一、反向代理核心概念 本質原理: #mermaid-svg-UkFRDp2Ut7MK5T2N {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

三伍微電子GSR2406 IoT FEM 2.4G PA 射頻前端模組芯片

三伍微電子GSR2406 IoT FEM 2.4G PA 射頻前端模組芯片規格書Product Description The GSR2406 is a high-performance, fully integrated RF front-end module (FEM) designed for Zigbee technology, Thread, and Bluetooth (including low energy) applications. The GSR2406…

開發避坑指南(24):RocketMQ磁盤空間告急異常處理,CODE 14 “service not available“解決方案

異常信息 Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC: service not available now, maybe disk full, CL: 0.94 CQ: 0.94 INDEX: 0.94, maybe your broker machine memory too small.異常背景 一個項目里面用到了rocketmq&#x…

開源WAF新標桿:雷池SafeLine用語義分析重構網站安全邊界

文章目錄前言【視頻教程】1.安裝Docker2.本地部署SafeLine3.使用SafeLine4.cpolar內網穿透工具安裝5.創建遠程連接公網地址6.固定Uptime Kuma公網地址前言 當個人或企業站點上線后面臨的首要威脅往往來自網絡攻擊——據統計,超過60%的Web應用漏洞利用嘗試在流量到達…

Mac M1探索AnythingLLM+SearXNG

SearXNG 能聚合來自多達 200 多個搜索服務,可私有化部署,并提供了靈活自定義選項。 AnythingLLMSearXNG,剛好能解決AnythingLLM因為網絡限制導致web search不可用的問題。 1 安裝docker 下載mac m1版本的docker并安裝。 https://docs.dock…

模式設計:策略模式及其應用場景

簡介 策略模式(Strategy Pattern)是一種行為型設計模式,它允許在運行時動態選擇算法或行為。核心思想是將算法封裝成獨立的類(策略),使它們可以相互替換,讓算法的變化獨立于使用它的客戶端。 核心思想 解耦:將算法的定義與使用分離。每個算法封裝起來,使它們可以互…

Squash Merge(壓縮合并)和Rebase Merge(變基合并)介紹

文章目錄**1. Squash Merge(壓縮合并)****定義****操作步驟****特點****優點****缺點****2. Rebase Merge(變基合并)****定義****操作步驟****特點****優點****缺點****3. 對比總結****4. 選擇建議****5. 示例場景****Squash Merg…

Linux編程 —— framebuffer

一、framebuffer概念framebuffer:幀緩沖,幀緩存技術Linux內核專門為圖形化顯示提供的一套應用程序接口。二、基本操作步驟1. 打開顯示設備(/dev/fb0) 2. 獲取顯示設備相關參數(分辨率,像素格式)---》ioctl 3. 建立顯存…

文件編輯html

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>文件行內容編輯器</title><script src&…

具有熔斷能力和活性探測的服務負載均衡解決方案

一、整體架構設計 1.核心組件 負載均衡器&#xff1a;負責選擇可用的服務節點健康檢查器&#xff1a;定期檢測服務節點的可用性服務節點管理&#xff1a;維護所有可用節點的狀態信息 2.負載均衡策略 輪詢(Round Robin)隨機(Random)加權輪詢(Weighted Round Robin)最少連接(Leas…

技術演進中的開發沉思-62 DELPHI VCL系列:VCL下的設計模式

今天聊聊設計模式&#xff0c;當然這個章節目前僅限于DELPHI VCL,因為接下來梳理的Factory/Factory Method、Bootstrap 和 ForEach 這三種設計樣例&#xff0c;看似獨立&#xff0c;卻在實際開發中相互配合&#xff0c;共同構建起高效、靈活的程序架構。在 DELPHI VCL 開發的技…

Docker 101:面向初學者的綜合教程

掌握 Docker 已成為軟件開發中的一項關鍵技能。本教程探討了容器化的世界&#xff0c;包括其核心概念、優缺點&#xff0c;以及開始使用容器化的分步指南。 無論是 Docker 的新手&#xff0c;還是希望復習基礎知識的更有經驗的開發人員&#xff0c;本指南都能滿足需求。 什么…