当前位置: 首页 > news >正文

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.dtcms.com/a/354120.html

相关文章:

  • Go 1.25新特性之容器感知功能详解
  • 【C++语法篇】:函数
  • 超越ChatBI!深度解析衡石HENGSHI SENSE 6.0如何实现全流程AI赋能
  • 第二阶段WinFrom-7:文件操作补充,泛型复习,协变和逆变
  • Python LangChain RAG从入门到项目实战09.:LangChain 中的 Retriever(检索器)
  • buuctf——web刷题第5页
  • Vue2 基础用法
  • CVPR深度学习研究指南:特征提取模块仍是论文创新难点
  • 吴恩达机器学习作业二:线性可分逻辑回归
  • CMake构建学习笔记21-通用的CMake构建脚本
  • Liunx内核驱动
  • Java中StringBuilder原理以及使用
  • D4145低功耗GFCI接地故障控制芯片介绍
  • 题目—移除元素
  • 作业帮,途虎养车,得物,途游游戏,三七互娱,汤臣倍健,游卡,快手26届秋招内推
  • JUC多线程个人笔记
  • 【DC工具GUI入门】
  • APP测试全流程以及测试点
  • 【开题答辩全过程】以 基于SpringBoot的流浪动物领养系统的设计与实现 为例,包含答辩的问题和答案
  • 从Java到Go:初遇Go语言的震撼体验
  • 力扣 30 天 JavaScript 挑战 第41天 (第十二题)对异步操作,promise,async/await有了更深理解
  • 【Linux实时内核机制】ww_rt_mutex 的contending_lock异常问题
  • android/java中主线程和子线程的详解
  • Nano Banana揭秘:Google Gemini 2.5 Flash Image正式发布 | AI图像编辑新时代
  • 内网应用如何实现外网访问?外地通过公网地址访问内网服务器的设置方法
  • 动态规划:青蛙跳台阶实践
  • H20 性能表现之 Kimi-K2
  • 【git】:gitee项目管理vs2019
  • 装饰器进阶与设计模式
  • Linux入门教程 第十五章 Linux 系统调优工具