123问免费工具与知识服务
123问工具大全› 工具大全› 网络工具› HTTP响应头检测

📋 HTTP响应头检测

响应头查看 · 安全头检测 · 解读说明

受浏览器CORS限制,仅显示前端可读取的响应头

HTTP响应头检测常见问题

常见的HTTP响应头有哪些?

和运维最相关的:Content-Type(内容类型)、Content-Encoding(压缩方式)、Cache-Control(缓存策略)、Set-Cookie(Cookie)、Server(服务器)、X-Frame-Options(防点击劫持)、Content-Security-Policy(CSP,防XSS)、Strict-Transport-Security(HSTS,强制HTTPS)。

响应头对网站安全有多重要?

关系到核心安全。X-Frame-Options防点击劫持,CSP防XSS和注入,HSTS防明文回退,X-Content-Type-Options防MIME嗅探。少配这些安全头,网站在攻击者眼中就是"裸奔"。尤其对登录、支付类页面,安全响应头是标配。

为什么看不到所有响应头?

浏览器CORS策略限制前端JavaScript只能读取部分响应头(如Content-Type、Cache-Control等白名单头)。Set-Cookie和部分自定义头在前端拿不到,需要命令行(curl -I)或后端代理才能看全。

Cache-Control的max-age是什么意思?

max-age=N表示浏览器可以把资源缓存N秒,期间刷新不再请求服务器。它是前端性能优化最常用的响应头之一。配合ETag/Last-Modified做协商缓存,能大幅减少重复请求。

Content-Security-Policy(CSP)是干什么的?

CSP是你给浏览器下的一道"白名单",允许哪些来源的脚本、图片、样式能加载。正确配置后,即使被注入了恶意脚本,浏览器也会因为来源不在白名单而拒绝执行,是防XSS最有效的手段之一。

X-Frame-Options和CSP谁能防点击劫持?

两者都能,X-Frame-Options只有DENY/SAMEORIGIN几个值,简单但够用;CSP的frame-ancestors更灵活,还能指定多个允许来源。现代站点推荐用CSP的frame-ancestors,两者同时配置也常见。

Server头能暴露什么?要不要隐藏?

Server头会暴露服务器软件和版本,攻击者能据此定向找该版本的已知漏洞。X-Powered-By同样暴露PHP/ASP等后端。建议在生产环境隐藏或混淆,减少被针对性攻击的风险。

怎么用命令行看完整响应头?

用 curl -I 网址 只显示头;curl -i 网址 连头带体一起显示。这样能绕过浏览器限制看到Set-Cookie、完整Server等所有响应头,是后端排查的标准姿势。

HTTP响应头检测 - 示例演示

示例一:检查网站安全响应头配置

输入:输入 https://www.baidu.com,点击检测响应头
结果:查看是否配置了HSTS、CSP、X-Frame-Options、X-Content-Type-Options等安全头
安全响应头是防XSS、点击劫持、MIME嗅探的第一道防线。用这个工具快速扫描目标站缺了哪些安全头,对照清单逐项补上。

示例二:分析CDN的缓存响应头

输入:输入使用了CDN的站点URL
结果:响应头中出现X-Cache: HIT、Age、Via等CDN相关头
X-Cache: HIT说明命中CDN缓存,MISS则回源了。Age表示该资源在CDN节点已缓存多少秒。Via显示了中间代理链路。这些头是判断CDN是否正常工作的关键指标。

示例三:调试浏览器缓存问题

输入:输入静态资源URL(如CSS文件),看Cache-Control和ETag
结果:Cache-Control: max-age=31536000 说明缓存1年,ETag用于协商缓存验证
改完CSS文件用户看到的还是旧版?检查max-age是否太长、ETag是否没变。合理策略是HTML短期缓存、CSS/JS用版本号+长期缓存。

HTTP响应头检测深度解读

安全响应头一览

安全响应头是Web安全的"标配",一旦部署正确,能挡住大量常见攻击。每项安全头都有明确的防护目标:

关键安全响应头详解
响应头防护目标推荐值缺失风险
Strict-Transport-Security强制HTTPS,防SSL剥离max-age=31536000; includeSubDomains用户可能被劫持到HTTP明文连接
Content-Security-Policy防XSS和数据注入default-src 'self'; script-src 'self'恶意脚本可在页面中执行
X-Frame-Options防点击劫持DENY 或 SAMEORIGIN页面可被嵌入恶意iframe
X-Content-Type-Options防MIME类型嗅探nosniff浏览器可能错误解析文件类型
Referrer-Policy控制Referer发送粒度strict-origin-when-cross-origin跨域请求泄漏完整路径信息
Permissions-Policy控制浏览器API权限camera=(), microphone=()第三方脚本可能调用敏感API

这些安全头不需要全部配,但对有登录、支付、表单的页面,至少把HSTS、CSP、X-Frame-Options这三项配好,安全等级就能提升一大截。

缓存控制头的工作原理

HTTP缓存分"强缓存"和"协商缓存"两条路,由不同的响应头控制。理解它们才能设计出好的缓存策略。

  • 强缓存:Cache-Control: max-age=N 表示N秒内直接用缓存,不发请求。Expires是旧版方案,现代用max-age。
  • 协商缓存:ETag(资源指纹)和Last-Modified(最后修改时间),浏览器带If-None-Match/If-Modified-Since去问服务器"有没有变化",304说明没变继续用缓存。
  • Cache-Control: no-cache 不是"不缓存",而是"每次都要问一下服务器",属于协商缓存。no-store才是真正不缓存。
  • public vs private:public允许CDN等中间代理缓存,private只允许浏览器缓存。
缓存策略选择指南
资源类型推荐缓存头说明
页面HTMLno-cache(协商缓存)保证内容最新
CSS/JS/图片max-age=31536000做强缓存+版本号
API接口no-cache每次回源校验
logo/图标长期max-age几乎不变

最佳实践:HTML文件用no-cache做协商缓存(保证内容最新),静态资源(CSS/JS/图片)用max-age做强缓存并配合版本号更新。

CORS跨域资源共享详解

CORS(Cross-Origin Resource Sharing)是现代Web中跨域请求的标准机制。浏览器默认禁止跨域AJAX,必须服务器在响应头中明确授权:

  • Access-Control-Allow-Origin:允许哪些来源。* 表示全部允许,但携带Cookie时不能用 *,必须指定具体域名。
  • Access-Control-Allow-Methods:允许的HTTP方法(GET/POST/PUT/DELETE等)。
  • Access-Control-Allow-Headers:允许的请求头。自定义header如X-Token必须在此列出。
  • Access-Control-Allow-Credentials:是否允许携带Cookie,设为true时Origin不能是 *。
  • Access-Control-Max-Age:预检请求(OPTIONS)的缓存时间,减少重复预检。
CORS常用响应头速查
响应头作用注意点
Access-Control-Allow-Origin允许的来源* 时不能带Cookie
Access-Control-Allow-Methods允许的HTTP方法须覆盖实际用到的方法
Access-Control-Allow-Headers允许的请求头自定义头须逐一列出
Access-Control-Allow-Credentials是否允许Cookie为true时Origin不能是*
Access-Control-Max-Age预检缓存时间减少重复OPTIONS

前后端分离项目中,后端API务必正确配置CORS,否则前端请求全被浏览器拦截。生产环境千万别图省事配Origin: *,要精确到自己的域名。

Server头的信息泄露风险

Server响应头会直接暴露Web服务器软件和版本号,如"nginx/1.18.0"或"Apache/2.4.41"。这对攻击者是极大的便利——他们可以精确定位已知版本的漏洞来攻击。

  • Nginx隐藏:server_tokens off; 只显示 "nginx" 不显示版本。
  • Apache隐藏:ServerTokens Prod 和 ServerSignature Off。
  • 完全自定义:用more_set_headers模块把Server改成无意义的字符串。
  • X-Powered-By同理,PHP的 expose_php = Off 可以隐藏。
常见服务端指纹隐藏配置
服务器指令效果
Nginxserver_tokens off只显示 nginx,无版本号
ApacheServerTokens Prod隐藏详细版本
PHPexpose_php = Off隐藏 X-Powered-By
自定义more_set_headers改成任意字符串

隐藏Server头是纵深防御的一部分,虽然不能挡住真正有决心的攻击者,但能让大部分自动化扫描器绕道。成本极低,值得做。

HTTP响应头检测参考数据

安全响应头检查清单

响应头检查项状态判断处理建议
Strict-Transport-Security是否返回HSTS头✅ 有 / ❌ 缺失Nginx: add_header Strict-Transport-Security ...
Content-Security-Policy是否配置CSP策略✅ 有 / ❌ 缺失从default-src 'self'开始逐步收紧
X-Frame-Options是否防护点击劫持✅ DENY/SAMEORIGIN / ❌ 缺失加 add_header X-Frame-Options SAMEORIGIN
X-Content-Type-Options是否设为nosniff✅ nosniff / ❌ 缺失加 add_header X-Content-Type-Options nosniff
Referrer-Policy是否限制Referer✅ 有 / ❌ 缺失设为strict-origin-when-cross-origin
Permissions-Policy是否限制浏览器API✅ 有 / ❌ 缺失按需禁用不用的API

常见HTTP响应头速查

响应头类别作用示例值
Content-Type内容声明响应体MIME类型和编码text/html; charset=utf-8
Content-Encoding压缩响应体压缩算法gzip, br, deflate
Cache-Control缓存缓存策略指令max-age=3600, no-cache
ETag缓存资源的唯一标识,用于协商缓存"5d8c72a5-2640"
Server服务器服务器软件信息nginx
Set-Cookie会话设置客户端CookiesessionId=abc123; HttpOnly; Secure
Access-Control-Allow-OriginCORS允许跨域请求的来源https://www.example.com
Via代理显示中间代理链路1.1 varnish
AgeCDN资源在CDN节点已缓存秒数3600

使用说明

使用方法

1. 输入完整URL(含https://)。

2. 点击"检测响应头"。

3. 查看所有可检测的响应头及其安全/性能解读。

4. 用 curl -I 命令查看浏览器拿不到的完整响应头。

分享工具: Facebook Twitter 微博 复制链接