它们是浏览器或客户端在发送请求时传给服务器的附加信息,告诉服务器:我是怎么来的、想要什么、能接受什么、身份是谁。
一、通用请求头(所有请求都可能携带)
Header 名称 |
示例值 |
说明 |
Host |
example.com:8080 |
服务器主机名+端口,必需字段 |
Connection |
keep-alive / close |
控制是否保持长连接 |
Cache-Control |
no-cache , max-age=0 |
控制缓存策略 |
User-Agent |
Mozilla/5.0... |
表示客户端身份(浏览器/设备类型) |
Accept |
text/html, application/json |
告诉服务器可接受的响应内容类型 |
Accept-Encoding |
gzip, deflate, br |
告诉服务器支持的压缩算法 |
Accept-Language |
zh-CN,zh;q=0.9,en;q=0.8 |
支持的语言,服务器可据此返回多语言内容 |
二、客户端身份 & 安全相关
Header 名称 |
示例值 |
说明 |
Authorization |
Bearer token123 |
携带身份认证令牌(如 JWT、Basic Auth) |
Cookie |
JSESSIONID=abc123 |
携带客户端保存的 Cookie(如登录态) |
Referer |
https://xxx.com/page |
请求来源页面,用于防盗链或统计 |
Origin |
https://xxx.com |
请求源地址,用于跨域请求判断 |
X-CSRF-Token |
token123 |
防止 CSRF 攻击的令牌(由前端发送) |
三、Ajax、前端框架常用
Header 名称 |
示例值 |
说明 |
X-Requested-With |
XMLHttpRequest |
判断是否为 Ajax 请求(传统方式) |
Content-Type |
application/json |
请求体的格式类型(表单、JSON、XML) |
Content-Length |
348 |
请求体的字节长度(自动设置) |
四、代理/真实客户端相关(获取真实 IP 时非常重要)
Header 名称 |
示例值 |
说明 |
X-Forwarded-For |
123.45.67.89 |
代理链中最早的客户端 IP(通常为真实 IP) |
X-Real-IP |
123.45.67.89 |
Nginx 反向代理中的真实 IP |
Proxy-Client-IP |
unknown 或 IP |
一些代理服务器设置的客户端 IP |
WL-Proxy-Client-IP |
unknown 或 IP |
WebLogic 代理客户端 IP |
五、示例:查看请求头(代码方式)
在 Java Spring 中可以通过 HttpServletRequest
查看所有请求头:
复制代码
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
String value = request.getHeader(name);
System.out.println(name + ": " + value);
}