HTTP 请求/响应头手册
更新于 2026年7月25日
适用人群:排查网站访问异常、配置反向代理/CDN、调试爬虫抓取问题的开发者和站长。
核心概念
请求头 vs 响应头
请求头(Request Headers)由浏览器/客户端在发起请求时携带,告诉服务器"我是谁、我要什么";响应头(Response Headers)由服务器返回,告诉客户端"这是什么内容、如何处理"。部分头(如Cache-Control)在请求和响应中都可出现,含义略有不同。
常用HTTP头对照表
| 头名 | 方向 | 作用 |
|---|---|---|
| Host | 请求 | 指定目标域名,支撑同一IP多域名共存(虚拟主机) |
| User-Agent | 请求 | 标识客户端类型(浏览器/爬虫/App),常用于反爬或统计 |
| Accept | 请求 | 声明客户端可接受的内容类型(如text/html, application/json) |
| Accept-Encoding | 请求 | 声明客户端支持的压缩方式(gzip, br等) |
| Referer | 请求 | 说明请求来源页面地址,常用于防盗链 |
| Cookie | 请求 | 携带会话/身份信息 |
| Authorization | 请求 | 携带身份认证凭据(如Bearer Token、Basic Auth) |
| Content-Type | 请求/响应 | 说明请求体或响应体的数据格式(如text/html; charset=utf-8) |
| Content-Length | 响应 | 响应体字节长度 |
| Cache-Control | 请求/响应 | 控制缓存策略(如max-age、no-cache、no-store) |
| Expires | 响应 | 指定内容过期的绝对时间,效果被Cache-Control覆盖 |
| ETag | 响应 | 内容指纹,用于协商缓存判断资源是否变化 |
| Last-Modified | 响应 | 资源最后修改时间,配合If-Modified-Since做协商缓存 |
| Set-Cookie | 响应 | 服务器向客户端写入Cookie |
| Location | 响应 | 配合3xx状态码指定跳转目标地址 |
| Server | 响应 | 声明服务器软件类型(如nginx、Apache),出于安全常被隐藏 |
| X-Frame-Options | 响应 | 控制页面是否允许被iframe嵌套,防点击劫持 |
| Strict-Transport-Security | 响应 | 强制浏览器后续只用HTTPS访问(HSTS) |
| Content-Security-Policy | 响应 | 限制页面可加载的脚本/资源来源,防XSS |
| Access-Control-Allow-Origin | 响应 | CORS跨域许可的来源域名 |
排查思路
遇到"页面被缓存不更新"先看Cache-Control/ETag;遇到"跳转异常"看Location和状态码是否匹配;遇到"爬虫抓不到内容"看User-Agent识别逻辑和响应头是否有异常拦截。
对应工具
常见问题
Cache-Control和Expires同时存在听谁的?
Cache-Control优先级更高,现代浏览器会优先采用Cache-Control的max-age等指令,Expires仅作为兼容旧客户端的降级方案。
为什么响应头里看不到Server具体版本号?
出于安全考虑,很多服务器/CDN会主动隐藏或简化Server头,避免暴露具体软件版本给攻击者作为漏洞利用参考。
相关教程
相关文章
官方资料来源