HTTP 頭

HTTP 頭(HTTP Header)是 HTTP 請求/響應中用于傳遞元數據的關鍵部分,分為 請求頭(Request Header)響應頭(Response Header)通用頭(General Header)實體頭(Entity Header) 四大類(注:HTTP/2 后對分類做了簡化,但核心字段功能不變)。它們就像“數據的說明書”,告訴客戶端/服務器如何處理本次請求或響應。

一、通用頭(General Headers)

適用于 請求和響應,傳遞通用的元數據,與具體業務邏輯無關。

字段名

作用說明

示例

Cache-Control

控制緩存策略(客戶端/服務器如何緩存數據)

Cache-Control: max-age=3600(緩存1小時)

Connection

控制連接狀態(是否保持長連接)

Connection: keep-alive(長連接)

Date

表示請求/響應發送的時間(GMT 格式)

Date: Wed, 27 Aug 2025 08:00:00 GMT

Transfer-Encoding

表示數據的傳輸編碼方式(如分塊傳輸)

Transfer-Encoding: chunked

Upgrade

提議將當前協議升級為其他協議(如 HTTP/1.1 升級到 WebSocket)

Upgrade: websocket

Via

記錄請求經過的代理/網關(追蹤請求路徑)

Via: 1.1 proxy-server.com

二、請求頭(Request Headers)

客戶端(瀏覽器/APP) 發送給服務器,包含請求的細節(如身份、期望的響應格式、請求來源等)。

字段名

作用說明

示例

Host

指定請求的目標服務器域名和端口(HTTP/1.1 必需字段,用于虛擬主機識別)

Host: www.example.com:8080

User-Agent (UA)

標識客戶端的類型(瀏覽器/系統/APP 版本),服務器據此返回適配內容

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0

Accept

客戶端能接受的響應數據格式(MIME 類型),服務器據此返回對應格式

Accept: application/json, text/html

Accept-Encoding

客戶端支持的壓縮算法(如 gzip、br),服務器用對應算法壓縮響應以節省帶寬

Accept-Encoding: gzip, deflate, br

Accept-Language

客戶端期望的響應語言(如中文、英文),服務器據此返回多語言內容

Accept-Language: zh-CN, en-US;q=0.9(q 表示優先級)

Authorization

攜帶身份認證信息(如 Token、Basic 認證),用于權限校驗

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Cookie

客戶端存儲的 Cookie 數據(服務器之前通過 Set-Cookie 下發),用于會話保持

Cookie: sessionId=abc123; username=test

Referer

標識當前請求的來源頁面(即“從哪個頁面跳過來的”),用于防盜鏈、統計

Referer: https://www.example.com/login

Origin

標識請求的來源域名(僅跨域請求時攜帶,不含路徑),用于 CORS 跨域校驗

Origin: https://www.abc.com

Content-Type

客戶端發送的請求體數據格式(僅 POST/PUT 等帶請求體的方法需要)

Content-Type: application/json(JSON 格式)、application/x-www-form-urlencoded(表單格式)

Content-Length

客戶端發送的請求體數據長度(字節數),服務器據此判斷數據是否接收完整

Content-Length: 128

X-Forwarded-For (XFF)

記錄請求經過的客戶端真實 IP(多層代理場景下,第一個值為真實 IP)

X-Forwarded-For: 192.168.1.100, 10.0.0.1

X-Requested-With

標識請求是否為 AJAX 請求(前端框架如 jQuery/Vue 會自動添加)

X-Requested-With: XMLHttpRequest

三、響應頭(Response Headers)

服務器 發送給客戶端,包含響應的處理規則(如Cookie設置、跨域允許、響應格式等)。

字段名

作用說明

示例

Status / HTTP/1.1

響應狀態碼(核心字段,標識請求是否成功)

HTTP/1.1 200 OK(成功)、404 Not Found(資源不存在)

Server

標識服務器的軟件類型(如 Apache、Nginx),可自定義隱藏以提高安全性

Server: Nginx/1.20.1

Set-Cookie

服務器向客戶端下發 Cookie(可設置過期時間、域名、路徑、HttpOnly 等屬性)

Set-Cookie: sessionId=abc123; Max-Age=3600; HttpOnly; Secure

Access-Control-Allow-Origin (CORS)

跨域請求時,允許訪問的客戶端域名(解決跨域問題)

Access-Control-Allow-Origin: https://www.abc.com(允許指定域名)、*(允許所有)

Access-Control-Allow-Methods

跨域請求時,允許的 HTTP 方法(如 GET/POST/PUT)

Access-Control-Allow-Methods: GET, POST, OPTIONS

Access-Control-Allow-Credentials

跨域請求時,是否允許攜帶 Cookie(需與前端 withCredentials: true 配合)

Access-Control-Allow-Credentials: true

Content-Type

服務器返回的響應體數據格式(MIME 類型),客戶端據此解析(如渲染頁面、解析JSON)

Content-Type: text/html; charset=utf-8(HTML頁面)、application/json(JSON數據)

Content-Encoding

服務器對響應體的壓縮算法(與客戶端 Accept-Encoding 對應)

Content-Encoding: gzip

Content-Length

服務器返回的響應體數據長度(字節數),客戶端據此判斷數據是否接收完整

Content-Length: 2048

Location

重定向地址(僅配合 3xx 狀態碼使用,如 301 永久重定向、302 臨時重定向)

Location: https://www.new-example.com

Refresh

頁面自動刷新/跳轉(秒數后執行)

Refresh: 5; url=https://www.example.com(5秒后跳轉到指定地址)

ETag

資源的唯一標識(用于緩存校驗,如“資源是否被修改”)

ETag: "abc123-def456"

Last-Modified

資源最后修改的時間(用于緩存校驗,與客戶端 If-Modified-Since 配合)

Last-Modified: Wed, 20 Aug 2025 12:00:00 GMT

四、實體頭(Entity Headers)

用于描述 請求體/響應體(實體數據) 的元數據(如數據類型、長度、編碼、語言等),部分字段已與請求頭/響應頭重疊(如 Content-TypeContent-Length),HTTP/2 后更強調“與實體相關的頭”而非單獨分類。

常見實體頭(已在上述分類中覆蓋):

  • Content-Type:實體數據格式
  • Content-Length:實體數據長度
  • Content-Encoding:實體數據壓縮算法
  • Content-Language:實體數據的語言(如 Content-Language: zh-CN
  • Expires:實體數據的過期時間(緩存用,優先級低于 Cache-Control

五、關鍵補充:自定義頭(X-* 頭)

除了標準頭,開發者還可以自定義頭,通常以 X- 開頭(如 X-User-IDX-Request-Trace-ID),用于傳遞業務自定義的元數據(如用戶ID、請求追蹤ID)。

示例:

  • 客戶端請求頭:X-User-ID: 1001(傳遞當前用戶ID)
  • 服務器響應頭:X-Trace-ID: abc-123-def(傳遞請求追蹤ID,用于排查問題)

總結

HTTP 頭的核心作用是 “傳遞上下文”

  • 客戶端通過請求頭告訴服務器“我是誰、我要什么、我能處理什么”;
  • 服務器通過響應頭告訴客戶端“請求結果如何、我返回了什么、你該怎么處理”。

日常開發中,常見問題(如跨域、緩存、參數解析錯誤)大多與 HTTP 頭配置相關(例如跨域問題需檢查 Access-Control-* 頭,POST 參數拼URL需檢查 Content-Type 頭)。

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

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

相關文章

vue 海康視頻插件

背景: 在vue項目中,需要在pc端播放視頻,播放的視頻包括視頻實時、視頻回放等。 寫文思路: 海康視頻對接流程,了解海康視頻插件,前端開發項目并引入依賴,前端開發封裝的組件,組件的調…

【URP】Unity 插入自定義RenderPass

【從UnityURP開始探索游戲渲染】專欄-直達 自定義渲染通道是一種改變通用渲染管道(URP)如何渲染場景或場景中的對象的方法。自定義呈現通道(RenderPass)包含自己的Render代碼,可以在注入點將其添加到RenderPass中。 添加自定義呈現通道(Rend…

DevSecOps 集成 CI/CD Pipeline:實用指南

就在你以為軟件開發已無簡化的余地時,新的解決方案應運而生 隨著軟件開發幾乎每天都在攀升,組織不斷嘗試以前所未有的速度交付新功能和應用程序。雖然持續集成和持續交付 (CI/CD) Pipeline 徹底改變了軟件部署,但它們…

vue2+elementui 表格單元格增加背景色,根據每列數據的大小 顏色依次變淺顯示

注釋: vue2elementui 表格列實現一個功能,給定兩個顏色:紅色 #f96d6f 和 綠色 #63be7b,列數據正數時表格單元格背景色為紅色,列數據負數時表格單元格背景色為綠色,根據數據的大小顏色依次越來越淡&#xff…

【JavaEE】(19) MyBatis-plus

一、MyBatis Generator 為 MyBastis 框架設計的代碼生成工具,簡化持久層編碼工作。根據數據庫表自動生成 Java 實體類、Mapper 接口、SQL 的 xml 文件。讓開發者專注于業務邏輯。 1、引入插件 MyBatis 官網搜索 MyBatis Generator 插件:Running MyBatis…

Android之騰訊TBS文件預覽

文章目錄前言一、效果圖二、實現步驟1.去官網注冊并創建應用[騰訊官網](https://console.cloud.tencent.com/tbs/client)2.下載arr文件并引入[騰訊TBS](https://download.csdn.net/download/Android_Cll/91764395)3.application實例化4.activity實例化5.下載網絡文件6.PreviewA…

基于微信小程序的化妝品成分查詢系統源碼

源碼題目:基于微信小程序的化妝品成分查詢系統源碼?? 文末聯系獲取(含源碼、技術文檔)博主簡介:10年高級軟件工程師、JAVA技術指導員、Python講師、文章撰寫修改專家、Springboot高級,歡迎高校老師、同行交流合作。畢…

STM32 啟動執行邏輯與代碼燒入方法詳解:從底層原理到實操落地

STM32 啟動執行邏輯與代碼燒入方法詳解:從底層原理到實操落地背景概要STM32啟動和執行的核心邏輯鏈條代碼燒入到STM32的途徑方法結束語背景概要 在學習STM32時候我們知道代碼需要通過一些下載器(如ST-Link、J-Link)或者串口下載燒入到STM32芯…

Go對接印度股票數據源指南:使用StockTV API

一、StockTV API簡介 StockTV提供全球200國家的實時金融數據,覆蓋股票、外匯、期貨和加密貨幣市場。針對印度市場(國家ID14),其主要優勢包括: 毫秒級低延遲響應7x24小時穩定服務日均處理億級數據免費技術支持 官方資源…

ESP8266:Arduino學習

ESP8266一:環境搭建使用Ardino框架,在官網下載,下載離線的支持包二:實現簡單的項目1. 點燈{pinMode(LED_PIN, OUTPUT); // 設置引腳為輸出模式digitalWrite(LED_PIN, HIGH); // 點亮 LED}I/O引腳的三種模式分別為:INPU…

青少年軟件編程(python六級)等級考試試卷-客觀題(2023年3月)

更多內容和歷年真題請查看網站:【試卷中心 -----> 電子學會 ----> 機器人技術 ----> 六級】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 青少年軟件編程(python六級)等級考試試卷-客觀題(2023年3月&#xff09…

mongodb influxdb

、您需要提前配置 MongoDB 和 InfluxDB。讓我幫您說明配置步驟: MongoDB 配置 啟動 MongoDB 容器后,進入容器創建數據庫: # 進入 MongoDB 容器 docker exec -it mongo mongosh -u root -p 123456# 創建 product 數據庫 use product# 創建集合…

模擬電路中什么時候適合使用電流傳遞信號,什么時候合適使用電壓傳遞信號

一、應用 1.實際應用中,需要進行權衡,比如抗干擾能力,傳輸距離,功耗 2.電壓信號比較容易受到干擾,對噪聲比較敏感,有噪聲容限一說 3.電流信號對噪聲不敏感 4.電源電壓下降的穩定性或者長距離傳輸中的損耗問…

Flink2.0學習筆記:使用HikariCP 自定義sink實現數據庫連接池化

stevensu1/EC0823: Flink2.0學習筆記:使用HikariCP 自定義sink實現數據庫連接池化 在 Flink 流處理應用中使用 HikariCP 實現數據庫連接池化,對于寫入關系型數據庫(如 MySQL、PostgreSQL)的 自定義 Sink 來說,不僅是推…

Ubuntu安裝及配置Git(Ubuntu install and config Git Tools)

Setup Git sudo apt update sudo apt install git // 查看git版本 git --versionConfig Github // 不清楚username和email的可以直接在github網站上點擊頭像選擇settings來查看 git config --global user

將C++資源管理測試框架整合到GitLab CI/CD的完整實踐指南

將C資源管理測試框架整合到GitLab CI/CD的完整實踐指南 摘要 本文深入探討了如何將先進的C資源管理測試框架無縫集成到GitLab CI/CD流水線中,實現自動化資源監控、性能回歸檢測和高質量測試。通過實際案例和最佳實踐,展示了如何構建一個能夠精確控制CPU親…

Web漏洞

一、Sql注入 sql注入漏洞的成因是由于后端數據庫查詢語句沒有做過濾導致了前端輸入字符串可以直接拼接到語句而獲取數據庫信息。 1.類型 數字型和字符型 區分:數字型可以進行加減運算,id11會獲取id2的信息,而字符型只會獲取1的數據 2.方…

Java中使用Spring Boot+Ollama構建本地對話機器人

目錄結構Ollama是什么安裝 Ollama下載大模型運行模型Java和IDEA版本創建一個springboot項目創建一個簡單的對話接口啟動spring boot流式對話輸出用原生 HTML 打造可交互前端接入 OpenAI、DeepSeek 等云模型(可選)原文地址傳送門 我是想做一個大模型本地部…

學習設計模式《二十四》——訪問者模式

一、基礎概念 訪問者模式的本質是【預留后路,回調實現】。仔細思考訪問者模式,它的實現主要是通過預先定義好調用的通路,在被訪問的對象上定義accept方法,在訪問者的對象上定義visit方法;然后在調用真正發生的時候&…

Rust 符號體系全解析:分類、應用與設計意圖

Rust 的符號體系是其語法規則、內存安全與類型安全設計的核心載體。每個符號不僅承擔特定功能,更隱含 Rust 對 “安全” 與 “表達力” 的平衡邏輯。本文按功能維度,系統梳理 Rust 中所有常用符號,結合代碼示例與設計背景,提供全面…