HTTP Header 解析与生成工具

一站式 HTTP Header 工具集,覆盖 RFC 9110 核心字段。内置 40+ 常用 Header 速查表(请求头/响应头/通用头/表示头/CORS/安全/缓存 7 大类), 每条含语法、示例、详细说明与易错点;解析器支持粘贴原始报文或 curl -H 风格文本,自动转换为键值对表格并标记格式警告; 生成器根据 URL + 方法 + Header + Body 一键生成等效 curl 命令与 JavaScript fetch 代码。 适用于调试跨域 CORS、设计缓存策略、配置安全响应头(CSP/HSTS)、生成 API 调用示例、 学习 HTTP 协议等场景,所有处理在浏览器本地完成。

从左侧选择一个 Header 查看详情

44 个常用 Header,覆盖 RFC 9110 核心字段

常见问题

HTTP Header 是什么?名称大小写敏感吗?

HTTP Header(HTTP 头字段)是 HTTP 请求与响应中键值对形式的元数据, 描述报文的发送方、接收方、主体内容、缓存策略、安全策略等信息。格式为 name: value(冒号后空格可选)。
名称大小写不敏感Content-Typecontent-typeCONTENT-TYPE 在 HTTP 协议层完全等价。RFC 9110 仅约定首字母大写习惯, 实际由各框架/服务器自行规范。但值是大小写敏感的(如 MIME 类型 application/json 必须小写)。
名称字符集限制:RFC 9110 仅允许可见 ASCII(0x21-0x7e),且不含冒号。 值可包含任意字符(含中文、Emoji),但需符合 obs-text 规范。生产环境建议 Header 值用 ASCII, 非 ASCII 内容放入主体。

请求头、响应头、通用头有什么区别?怎么分类?

HTTP Header 按出现位置分四大类:
1. 请求头(Request Headers):仅出现在 HTTP 请求中,描述客户端信息与期望。 典型:HostUser-AgentAcceptAuthorizationCookieRefererOrigin
2. 响应头(Response Headers):仅出现在 HTTP 响应中,描述服务器与响应信息。 典型:ServerSet-CookieLocationWWW-AuthenticateETagContent-Disposition
3. 通用头(General Headers):请求与响应都可出现,描述报文整体。 典型:DateConnectionViaTransfer-Encoding
4. 表示头(Representation Headers):描述主体内容(HTTP/1.1 概念,HTTP/2+ 已合并)。 典型:Content-TypeContent-LengthContent-Encoding。 本工具额外划分 CORS(跨域)、安全(CSP/HSTS 等)、 缓存(Cache-Control/ETag 等)三个语义子类,便于查找。

Cookie 和 Set-Cookie 有什么区别?SameSite 怎么选?

Cookie 是请求头,浏览器自动携带同域 Cookie 到服务端,格式 Cookie: name1=value1; name2=value2(分号空格分隔)。
Set-Cookie 是响应头,服务端设置 Cookie,一个响应可含多条 Set-Cookie (其他 Header 通常合并为逗号分隔,但 Set-Cookie 例外)。属性: Path(路径)、Domain(域)、Max-Age(秒,优先于 Expires)、 HttpOnly(防 JS 读取,防 XSS 窃取)、Secure(仅 HTTPS)、 SameSite(防 CSRF)。
SameSite 三个值的选择
- Lax(默认,推荐):跨站 GET 携带,POST/PUT/DELETE 不携带。平衡安全与体验,适合大多数站点。
- Strict:完全不跨站携带。最安全,但从外站跳转过来会丢登录态。
- None:跨站全部携带。需同时设 Secure。仅第三方 Cookie 场景使用(如嵌入式广告), Chrome 已逐步淘汰第三方 Cookie,建议避免。
生产环境:会话 Cookie 用 HttpOnly; Secure; SameSite=Lax,跨子域共享时加 Domain=.example.com

CORS 跨域怎么配置?为什么用了 * 还是报错?

CORS(跨域资源共享)通过响应头控制浏览器跨域访问。核心头: Access-Control-Allow-Origin(允许的源)、Access-Control-Allow-Methods(允许的方法)、 Access-Control-Allow-Headers(允许的自定义头)、Access-Control-Allow-Credentials(允许携带凭证)、 Access-Control-Max-Age(预检缓存时长)。
"用了 * 还是报错"的三大常见原因
1. 携带凭证时不能用 *:当前端 fetch(url, { credentials: "include" })XMLHttpRequest.withCredentials = true 时,服务端 Access-Control-Allow-Origin 必须是具体源(如 https://example.com),不能是 *。否则浏览器报错 "The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*'..."。
2. 预检请求未通过:复杂请求(如自定义头、PUT/DELETE、Content-Type: application/json) 会先发 OPTIONS 预检。预检响应必须正确返回 Allow-Methods、Allow-Headers、Allow-Credentials, 否则实际请求被拦截。
3. 缺少 Vary: Origin:若 Allow-Origin 动态返回(多源白名单),必须配合 Vary: Origin,否则 CDN 缓存会串内容(A 站命中后缓存给 B 站)。
推荐配置:Access-Control-Allow-Origin: https://your-frontend.com + Vary: Origin + Access-Control-Allow-Credentials: true(如需凭证)。

Cache-Control 怎么配置缓存策略?max-age 和 s-maxage 有什么区别?

Cache-Control 是 HTTP/1.1 缓存策略核心字段,常用指令: max-age(浏览器缓存秒数)、s-maxage(CDN/共享缓存秒数,覆盖 max-age)、 public(可被中间缓存)、private(仅浏览器缓存,不能 CDN)、 no-cache(强制验证,每次发条件请求)、no-store(完全不缓存)、 immutable(永不变,永久缓存)、stale-while-revalidate(接受过期同时异步重验证)、 must-revalidate(过期后必须验证)。
max-age vs s-maxagemax-age=3600 仅控制浏览器缓存 1 小时; s-maxage=86400 控制 CDN 缓存 1 天。两者并存时,CDN 用 s-maxage,浏览器用 max-age。 典型配置:Cache-Control: public, max-age=3600, s-maxage=86400, stale-while-revalidate=86400
常用策略
- 带 hash 的静态资源(如 /_app/main.a1b2c3.js): Cache-Control: public, max-age=31536000, immutable(一年永久缓存,永不变)。
- HTML 文档Cache-Control: no-cache(强制验证,配合 ETag)。
- API 响应Cache-Control: private, max-age=0, no-cacheno-store(敏感数据)。
- 用户特定数据Cache-Control: private, no-cache(不能 CDN)。

Content-Security-Policy 怎么写?为什么我的页面突然样式错乱?

Content-Security-Policy(CSP)是防御 XSS 的最强工具,限制资源加载来源。语法 directive source1 source2; directive source1 source2。常用指令:default-src (兜底)、script-src(脚本)、style-src(样式)、img-src(图片)、 font-src(字体)、connect-src(fetch/XHR/WebSocket)、frame-src (iframe)、object-src(Flash/Plugin)。
常见 source 值'self'(同源)、'none'(完全禁止)、 'unsafe-inline'(允许内联,弱化 CSP)、'unsafe-eval'(允许 eval,弱化)、 https:(任意 HTTPS)、https://cdn.example.com(具体源)、 'sha256-...'(脚本哈希白名单)、'nonce-RANDOM'(一次性 nonce)。
"样式错乱"通常是 CSP 拦截了样式:检查浏览器控制台是否报 "Refused to apply inline style...",常见原因:
1. <style> 标签或 style="..." 属性被 style-src 'self' 拦截。修复:加 'unsafe-inline' 或用 nonce/hash。
2. 外部 CDN 样式(如 Tailwind CDN)被拦截。修复:style-src 'self' https://cdn.tailwindcss.com
3. @font-face 字体被拦截。修复:font-src 'self' https://fonts.gstatic.com
推荐做法:先用 Content-Security-Policy-Report-Only 仅上报不拦截, 观察一段时间再切换到强制 CSP。本站点的 CSP 配置可以参考响应头中的实际值。

Host、Origin、Referer 三个头有什么区别?什么场景下用哪个?

三者都涉及"目标/来源"信息,但语义与场景不同:
Host(请求头):请求目标主机,格式 Host: api.example.com:443。 HTTP/1.1 必需,服务端据此做虚拟主机路由(一台 IP 多个域名)。HTTP/2 改为 :authority 伪头。
Origin(请求头):请求来源源,格式 Origin: https://www.example.com。 仅含协议+域+端口(不含路径与查询)。仅在跨域请求与 POST 时发送,用于 CORS 判断。 同源 GET 通常不发 Origin。
Referer(请求头):请求来源完整 URL,格式 Referer: https://www.example.com/page?query=1。注意拼写是历史遗留(应为 Referrer)。 同源与跨域都发送(受 Referrer-Policy 控制),用于防盗链、统计来源。
使用场景
- CORS 跨域校验:用 Origin(更简洁,仅源)。
- 防盗链(如图片/视频只允许自家页面引用):用 Referer(带路径,可细分)。
- 统计搜索来源(如 Google 来的关键词):用 Referer(含 query)。
- 虚拟主机路由:用 Host
安全提示Referer 可能泄露敏感 query 参数(如 token、session id), 建议设置 Referrer-Policy: strict-origin-when-cross-origin(默认值),跨域仅发源不发 query。

这个工具会上传我的 Header 数据吗?安全吗?

完全本地处理,零上传
- 速查表数据内置在页面 JS 包中,不发起任何网络请求。
- 解析器:你粘贴的 Header 文本仅在浏览器内存中处理,生成键值对表格,不发送到任何服务器
- 生成器:URL、方法、Header、Body 全部本地处理,生成的 cURL/fetch 代码仅在你本地浏览器中显示, 点击复制按钮才会写入剪贴板。
- 无 Cookie 追踪、无第三方统计、无广告,适合处理含 AuthorizationCookie 等敏感字段的 Header。
注意:本工具仅生成代码不发起请求——生成的 cURL 命令需你复制到终端执行, 生成的 fetch 代码需你复制到项目运行。本工具不会主动调用你输入的 URL。