HTTP 核心知識點整理

1. HTTP 基礎

  • ?定義:HTTP(HyperText Transfer Protocol)是應用層協議,基于 ?請求-響應模型,用于客戶端(瀏覽器)與服務器之間的通信。
  • ?特點
    • ?無狀態:每次請求獨立,服務器不保留客戶端狀態(通過 Cookie/Session 解決)。
    • ?明文傳輸?(HTTP) vs ?加密傳輸?(HTTPS)。
    • 默認端口:HTTP(80),HTTPS(443)。

?2. HTTP 方法(Methods)?

方法描述冪等性安全性
?GET獲取資源,參數在 URL 中
?POST提交數據,可能創建資源或觸發操作
?PUT更新整個資源
?PATCH部分更新資源
?DELETE刪除資源
?HEAD獲取響應頭,無響應體

冪等性:多次執行結果相同(如 GET、PUT、DELETE)。
安全性:不修改資源(如 GET、HEAD)。


?3. HTTP 狀態碼(Status Codes)?

狀態碼類別常見狀態碼及含義
1xx信息性100(繼續)
2xx成功?200(OK)?, 201(Created)
3xx重定向?301(永久重定向)?, ?302(臨時重定向)?, 304Not Modified(緩存未修改)
4xx客戶端錯誤?400(請求錯誤)?, ?401(未認證)?, ?403(禁止訪問)?, ?404(未找到)?
5xx服務器錯誤?500(內部錯誤)?, 502(網關錯誤), 503(服務不可用)

關鍵區別

  • 301 vs 302:301 是永久重定向(瀏覽器緩存),302 是臨時重定向。
  • 401 vs 403:401 表示未認證,403 表示無權限。

?4. HTTP 頭部(Headers)?

  • ?通用頭部
    • Cache-Control:緩存策略(如?max-age=3600)。
    • Connection:控制連接(如?keep-alive)。
  • ?請求頭部
    • Host:目標域名。
    • User-Agent:客戶端信息。
    • Authorization:認證信息(如 Bearer Token)。
  • ?響應頭部
    • Content-Type:響應體類型(如?application/json)。
    • Content-Length
    • Content-Encoding
    • Set-Cookie:設置 Cookie。
  • ?緩存相關
    • ETag:資源標識,用于協商緩存。
    • Last-Modified:資源最后修改時間。

?5. HTTP vs HTTPS

  • ?HTTPS?= HTTP + SSL/TLS 加密。
  • ?加密流程
    1. 客戶端發送請求,服務器返回證書。
    2. 客戶端驗證證書,生成對稱密鑰并用公鑰加密發送。
    3. 服務器用私鑰解密,后續通信使用對稱加密。
  • ?HTTP問題:無狀態,明文傳輸,不安全
  • HTTP的風險:竊聽、篡改、冒充
  • HTTPS如何解決的:信息加密、校驗機制、身份證書

?6. HTTP 緩存機制

  • ?強制緩存?(無需請求服務器):
    • Cache-Control: max-age=3600(優先級高于?Expires)。
  • ?協商緩存?(需請求服務器驗證):
    • Last-Modified?+?If-Modified-Since(時間戳)。
    • ETag?+?If-None-Match(唯一標識,精度更高)。

緩存流程
強緩存生效 → 直接返回本地緩存;
強緩存失效 → 發起請求,驗證協商緩存 → 返回 304 或新內容。


?7. HTTP/1.1 vs HTTP/2 vs HTTP/3

  • ?HTTP/1.1
    • 持久連接(默認?Connection: keep-alive)。
    • 隊頭阻塞(同一連接需順序處理請求)。
  • ?HTTP/2
    • 多路復用(一個連接并行處理多個請求)。
    • 頭部壓縮(HPACK)。
    • 二進制傳輸。
    • 服務器推送(Server Push)。
  • ?HTTP/3
    • 基于 ?QUIC 協議?(UDP 實現,解決隊頭阻塞)。
    • 更快握手(0-RTT)。

?8. 安全相關

  • ?CSRF(跨站請求偽造)?
    • 防御:Token 驗證、SameSite Cookie 屬性。
  • ?XSS(跨站腳本攻擊)?
    • 防御:輸入過濾、輸出轉義、CSP(內容安全策略)。

?9. Cookie 和 Session

  • ?Cookie:客戶端存儲,通過?Set-Cookie?設置,每次請求自動攜帶。
  • ?Session:服務端存儲用戶狀態,Session ID 通過 Cookie 傳遞。
  • ?區別
    • Cookie 不安全(可篡改),Session 較安全但需服務器存儲。
    • 分布式系統中 Session 需共享存儲(如 Redis)。

?10. RESTful API 設計

  • 資源定位:URL 表示資源(如?/users/123)。
  • HTTP 方法對應操作:GET(查)、POST(增)、PUT(改)、DELETE(刪)。
  • 狀態碼語義化:200(成功)、201(創建)、400(錯誤請求)等。
  • 版本控制:通過 URI(/v1/users)或頭部(Accept-Version: v1)。

?11. 性能優化

  • 減少請求次數:合并資源(CSS/JS)、雪碧圖。
  • 使用 CDN 加速靜態資源。
  • 壓縮資源:Gzip、Brotli。
  • 啟用 HTTP/2 多路復用。

12.http與websocket

  • websocket是全雙工通信,適用于實時應用

?高頻面試題

  1. GET 和 POST 的區別?
  2. HTTP 狀態碼 301 和 302 的區別?
  3. 如何實現 Cookie 的安全性(Secure/HttpOnly/SameSite)?
  4. 瀏覽器緩存機制是怎樣的?
  5. HTTP/2 如何提升性能?
  6. HTTP如何解決“粘包”的問題的?
    1. HTTP 協議通過設置回車符、換行符作為 HTTP header 的邊界,通過 Content-Length 字段作為HTTP body 的邊界,這兩個方式都是為了解決“粘包”的問題。

1.HTTPS的連接是如何建立的?

步驟一:TCP 連接建立
  • 客戶端向服務器發起 HTTPS 請求(默認端口 443),開始 TCP 三次握手。

?步驟二:TLS 握手(密鑰協商)?
  1. ?Client Hello

    • 客戶端發送支持的 TLS 版本、加密套件列表(如 RSA、ECDHE)、客戶端隨機數(Client Random)。
  2. ?Server Hello

    • 服務器選擇加密套件,返回服務器隨機數(Server Random)和數字證書(包含公鑰、域名、頒發機構等信息)。
  3. ?證書驗證

    • 客戶端驗證證書的合法性(如是否過期、域名匹配、證書鏈是否可信等)。
  4. ?生成預主密鑰

    • 客戶端生成一個隨機數 ?預主密鑰(Pre-Master Secret)?,用服務器公鑰加密后發送給服務器。
  5. ?生成會話密鑰

    • 服務器用私鑰解密獲取預主密鑰,結合 Client Random 和 Server Random,雙方通過算法生成相同的 ?對稱會話密鑰(Session Key)?

?步驟三:加密通信
  • 后續所有 HTTP 數據均使用 ?對稱加密(如 AES)??傳輸,會話密鑰僅在此次連接中有效,確保高效和安全。

關鍵詞:

  • ?非對稱加密:用于安全交換對稱密鑰(RSA/ECDHE)。
  • ?對稱加密:用于高效加密實際數據(AES)。
  • ?證書驗證:防止中間人攻擊,確保服務器身份可信。

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

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

相關文章

湯臣倍健業績倒車:2024年利潤下滑超六成,三大核心品牌銷量失守

撰稿|行星 來源|貝多財經 湯臣倍健的2024年,“隱痛”不少。 3月22日,國內膳食營養補充劑供應商湯臣倍健股份有限公司(SZ:300416,下稱“湯臣倍健”)公布了2024年年度報告。財報顯示,湯臣倍健過去一年出現了…

C#中的Lambda表達式?

在C#中,?Lambda表達式?是一種比匿名方法更簡潔、更靈活的語法形式,用于定義匿名函數(Anonymous Function)。它通過>運算符實現,能夠大幅簡化委托和表達式樹的編寫,是現代C#編程中廣泛使用的核心特性之…

通信系統的性能指標

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、通信系統的性能指標概述二、數字通信系統的有效性指標三、數字通信系統的可靠性指標總結 前言 一、通信系統的性能指標概述 其中一個提高,另一個…

Linux:(模擬HTTP協議,GET和POST方法,Http的狀態碼)

目錄 一、認識HTTP協議 1.上網的本質 2.應用層的運行邏輯 3.HTTP的概念 二、url 1.認識網址 三、HTTP協議的宏觀理解 1.HTTP請求 2.HTTP響應 3.實際的HTTP請求 (1)測試代碼 (2)接收HTTP請求 (3&#xff09…

動態規劃之完全背包

引言: 完全背包 隸屬于動態規劃中的背包問題。而 01背包 又是完全背包的基石,所以不懂01背包的,有必要了解一下。 什么是完全背包? 01背包問題:有一個背包承重為V,有N個物品,每個物品的價值(…

Codeforces Round 1003 (Div. 4)

ABCDE略 F 如果這個序列有兩個一樣的數挨著或者中間只隔一個其他的數&#xff0c;那么這個數就是多數。可以用反證法&#xff0c;構造一個多值序列無法不包含以上兩種結構。只需要在樹上找這兩種結構就可以了 #include <bits/stdc.h> #define int long long using nam…

金融數據分析(MATLAB)個人學習筆記(5):金融實證分析實例

一、國內外常用金融數據庫簡介 &#xff08;一&#xff09;國外數據庫 1. CRSP數據庫 CRSP&#xff08;Center for Research in Security Prices,證券價格研究中心&#xff09;是美國芝加哥大學商研所金融研究中心的產品。收集的美國股票和指數數據來源主要為紐約證券交易所…

硬件基礎(3):三極管(4):關于三極管的壓降

文章目錄 三極管的壓降使用與測量注意事項 三極管的壓降 三極管的“壓降”通常是指在一定工作狀態下&#xff0c;三極管不同電極之間產生的電壓差。對于常見的雙極性晶體管&#xff08;BJT&#xff09;而言&#xff0c;最常討論的壓降通常包括以下幾個部分&#xff1a; 基-發射…

[深度學習]圖像分類項目-食物分類

圖像分類項目-食物分類(監督學習和半監督學習) 文章目錄 圖像分類項目-食物分類(監督學習和半監督學習)項目介紹數據處理設定隨機種子讀取文件內容圖像增廣定義Dataset類 模型定義遷移學習 定義超參Adam和AdamW 訓練過程半監督學習定義Dataset類模型定義定義超參訓練過程 項目介…

5.go切片和map

切片的概念 數組和切片相比較切片的長度是不固定的&#xff0c;可以追加元素&#xff0c;在追加時可能會使切片的容量增大&#xff0c;所以可以將切片理解成 "動態數組"&#xff0c;但是&#xff0c;它不是數組&#xff0c;而是構建在數組基礎上的更高級的數據結構。…

在 Windows 上安裝 PowerShell 的多種方法與完整指南

原文&#xff1a;在 Windows 上安裝 PowerShell 的多種方法與完整指南 | w3cschool筆記 在 Windows 上安裝 PowerShell 有多種方式。每種安裝方法都適用于不同的場景和工作流。請選擇最適合您需求的方法。 WinGet&#xff1a;推薦在 Windows 客戶端上安裝 PowerShell 的方式MS…

云原生算力引擎:分布式推理的流體動力學

引言&#xff1a;算力黑洞的引力擾動 OpenAI推理集群日處理4.5億次請求&#xff0c;CUDA 12.3實現μs級張量切換。特斯拉Dojo超算芯片間延遲0.5ns&#xff0c;阿里巴巴PAI平臺節省58%訓練時長。HuggingFace模型庫下載量突破3億次&#xff0c;AWS Inferentia芯片能效比提升8倍。…

MySQL MVCC的快照讀和當前讀區別,Redis的RDB+AOF混合持久化流程。

MySQL MVCC 的快照讀和當前讀區別 快照讀 (Snapshot Read) 定義: 讀取數據的歷史版本&#xff08;快照&#xff09;&#xff0c;基于 MVCC&#xff08;多版本并發控制&#xff09;實現。特點: 不加鎖&#xff0c;非阻塞讀。返回事務開始時的快照數據&#xff0c;確保一致性。…

Cesium 自定義路徑導航材質

cesium 自定義路徑導航紋理圖片隨便更換&#xff0c;UI 提供設計圖片即可達到效果&#xff1b; 打開小馬的weix 關注下 搜索“技術鏈” 回復關鍵詞《《路徑》》獲取原始代碼&#xff1b; 拿到就能用輕松解決&#xff01;幫忙點個關注吧&#xff01;

3月25號

添加圖片的一些例子: // 創建一個二維數組,用來管理數據int[][] data new int[4][4]; // 記錄空白方塊的位置int x0;int y0; // 定義一個變量,記錄當前展示圖片的路徑String path"E:\\java\\jigsawgame\\路飛\\路飛"; // 加載圖片細節: // …

【機器學習】什么是支持向量機?

什么是支持向量機&#xff1f; 支持向量機&#xff08;SVM&#xff0c;Support Vector Machine&#xff09;是一種強大的機器學習算法&#xff0c;常用于分類問題&#xff0c;也可以用于回歸問題。它的核心思想是通過找到一個最佳的“超平面”來將不同類別的數據分開&#xff…

10分鐘打造專屬AI助手!ToDesk云電腦/順網云/海馬云操作DeepSeek哪家強?

文章目錄 一、引言云計算平臺概覽ToDesk云電腦&#xff1a;隨時隨地用上高性能電腦 二 .云電腦初體驗DeekSeek介紹版本參數與特點任務類型表現 1、ToDesk云電腦2、順網云電腦3、海馬云電腦 三、DeekSeek本地化實操和AIGC應用1. ToDesk云電腦2. 海馬云電腦3、順網云電腦 四、結語…

Spring Boot 一個接口實現任意表的 Excel 導入導出

Java的web開發需要excel的導入導出工具&#xff0c;所以需要一定的工具類實現&#xff0c;如果是使用easypoi、Hutool導入導出excel&#xff0c;會非常的損耗內存&#xff0c;因此可以嘗試使用easyexcel解決大數據量的數據的導入導出&#xff0c;且可以通過Java8的函數式編程解…

QT原子變量:QAtomicInteger、QAtomicPointer、QAtomicFlag

引言&#xff1a;原子變量為何重要&#xff1f; 在多線程編程中&#xff0c;共享數據的原子性訪問是保證線程安全的核心。傳統互斥鎖雖然有效&#xff0c;但會帶來性能損耗和死鎖風險。QT提供的原子類型&#xff08;QAtomicInteger、QAtomicPointer、QAtomicFlag&#xff09;通…

大模型金融企業場景落地應用

一、商業銀行體系 1. 江蘇銀行 企業背景&#xff1a;江蘇銀行是總部位于江蘇南京的全國性股份制商業銀行&#xff0c;在城商行中資產規模位居前列&#xff0c;積極擁抱金融科技&#xff0c;將數字化轉型作為核心戰略之一。近年來&#xff0c;江蘇銀行持續加大在人工智能、大數…