← 返回题目列表

HTTP 常见请求头和响应头有哪些?Host、Referer、User-Agent 分别有什么用?

高频 中等 第 8 / 32 题 更新于 2026/07/31
HTTPHeaderHostRefererUser-Agent

简化版

HTTP Header 是请求/响应的元数据。常见请求头有 HostUser-AgentRefererAuthorizationCookieAcceptContent-Type;常见响应头有 Set-CookieCache-ControlLocationContent-TypeContent-Encoding、安全响应头等。

详细版

面试常问几个高频 Header:

  1. Host:说明访问的域名,同一 IP 上虚拟主机路由必须依赖它;HTTP/1.1 要求有 Host。
  2. User-Agent:标识客户端类型、系统、浏览器版本,可用于兼容处理和统计,但不可信。
  3. Referer:表示当前请求从哪个页面来,常用于防盗链、统计、CSRF 辅助判断,但可能被隐藏或伪造。
  4. Authorization:携带认证凭证,例如 Bearer Token。
  5. Cookie / Set-Cookie:客户端带会话信息,服务端设置 Cookie。
  6. Location:配合 3xx 做重定向。
  7. Cache-ControlETagLast-Modified:控制缓存。

答题时最好按“路由、认证、缓存、内容协商、安全、追踪”分类讲,而不是散背一堆名字。

完整版教学

一、Header 是 HTTP 的控制面

HTTP 的 body 装业务数据,Header 装控制信息。没有 Header,服务器不知道你访问哪个域名、body 是 JSON 还是表单、是否带登录态、能不能压缩、是否命中缓存。

GET /articles HTTP/1.1
Host: offer.aigcbaba.com
User-Agent: Chrome/...
Accept: text/html
Cookie: sid=abc

这些字段不一定都安全可信,但它们决定了请求如何被网关、CDN、浏览器、服务端框架理解。

记忆钩子:HTTP Header 像快递单,body 像包裹;快递单写错,包裹内容再对也可能送错。

二、Host 为什么非常关键

现代服务器常常多个域名共用一个 IP。TCP 连接只能连到 IP 和端口,HTTP 层要靠 Host 区分用户想访问哪个站点。

1.2.3.4:443
  ├─ offer.aigcbaba.com
  ├─ api.aigcbaba.com
  └─ static.aigcbaba.com

如果没有 Host,反向代理就不知道该路由到哪个虚拟主机。HTTPS 场景里,TLS 握手阶段还会用 SNI 提前告诉服务器域名,用于选择证书;HTTP 请求阶段仍会带 Host。

三、User-Agent 能用但不能信

User-Agent 用于标识客户端,例如浏览器、爬虫、App、命令行工具。服务端可以据此做兼容、统计、灰度,但不能把它当安全依据。

用途是否适合原因
统计浏览器分布适合大致可用
返回移动端兼容页面可用但要谨慎UA 格式复杂
判断是否真实用户不可靠很容易伪造
鉴权授权不适合没有安全性

例如 curl 可以随手加 -A "Chrome" 伪装 UA,所以安全策略不能依赖它。

四、Referer 和 Referrer-Policy

Referer 记录请求来源页面,名字历史上拼错了但沿用至今。它常用于统计来源、防盗链和辅助安全判断。

Referer: https://example.com/articles/1

但 Referer 可能不存在:用户直接输入 URL、从 HTTPS 跳 HTTP、浏览器隐私策略、页面设置 Referrer-Policy 都可能让它被裁剪或不发送。因此它只能辅助判断,不能作为唯一认证条件。

五、认证、Cookie 与追踪类 Header

认证常用 Authorization,浏览器会自动带同站 Cookie,服务端通过 Set-Cookie 写入 Cookie。分布式系统里还常见 X-Request-Idtraceparent 这类追踪头。

Header方向作用
Authorization请求携带 Bearer/JWT/Basic 凭证
Cookie请求浏览器带会话数据
Set-Cookie响应服务端设置 Cookie
X-Request-Id请求/响应串联日志
traceparent请求W3C Trace Context

注意外部传来的用户信息类 Header 不能直接信任。网关透传用户身份给后端时,要清洗客户端伪造的同名 Header。

六、响应 Header 决定浏览器行为

响应头会影响缓存、重定向、下载、压缩和安全。比如 Cache-Control 决定缓存策略,Location 决定重定向目标,Content-Disposition 决定是否下载,Content-Security-Policy 能降低 XSS 风险。

HTTP/1.1 302 Found
Location: /login
Cache-Control: no-cache
Set-Cookie: sid=abc; HttpOnly; Secure; SameSite=Lax

一个接口返回 200 但 Content-Type 错成 text/plain,浏览器或客户端 SDK 可能无法按 JSON 解析;一个文件下载没有 Content-Disposition,浏览器可能直接预览。

七、常见误区与追问

  • 误区:Header 都是可信的。 大多数请求头都可被客户端伪造,安全决策必须结合签名、会话或可信网关。
  • 误区:Host 只是展示域名。 Host 直接影响虚拟主机路由和后端服务选择。
  • 误区:Referer 一定存在。 隐私策略、跨协议跳转、直接访问都会导致 Referer 缺失或被裁剪。
  • 追问:为什么 HTTP/1.1 要 Host? 因为同一 IP 可承载多个域名,服务器需要 Host 做虚拟主机路由。
  • 追问:Set-Cookie 里 HttpOnly、Secure、SameSite 有什么用? 分别降低 JS 窃取、明文传输和跨站请求风险。
  • 追问:如何传递链路追踪信息? 常用 traceparentX-Request-Id 或内部约定 Header,并在服务间透传。

八、加强记忆

HTTP Header 按功能分类记:路由看 Host,客户端信息看 User-Agent,来源看 Referer,认证看 Authorization/Cookie,缓存看 Cache-Control/ETag,重定向看 Location,安全看 CSP/HSTS/Set-Cookie 属性。这样答题不会散。