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 中所有常用符号,结合代码示例与设计背景,提供全面…