9. 接口测试中的请求头和响应头怎么看
请求头和响应头是接口测试中非常重要但经常被忽略的部分。很多同学做接口测试只看 URL、参数和响应体,却忽略 Header。结果遇到登录失败、Token 没带、Content-Type 错误、Cookie 不生效、跨域失败、文件上传失败、缓存异常时,不知道从哪里查。实际上,很多接口问题并不在 Body,而在 Header。
面试中问“请求头和响应头怎么看”,面试官想知道你是否能通过 Header 分析鉴权、请求格式、会话、缓存、跨域、安全和链路追踪问题。测试岗位不需要背所有 Header,但常见 Header 必须知道,并且要能结合项目场景解释。
一、Header 在 HTTP 中的作用
HTTP 请求和响应都可以带 Header。
请求头用于告诉服务端:客户端是谁、请求格式是什么、是否有登录凭证、希望接收什么格式、来源是什么。
响应头用于告诉客户端:返回内容是什么格式、是否设置 Cookie、是否允许跨域、是否缓存、是否重定向、链路 ID 是什么。
接口测试时,Header 常常决定请求能不能被服务端正确识别。
二、常见请求头
1. Content-Type
表示请求体格式。常见值:
application/json
application/x-www-form-urlencoded
multipart/form-data
如果接口要求 JSON,但请求头写成 form,后端可能解析失败,返回 400 或业务错误。
文件上传通常使用 multipart/form-data。
2. Authorization
常用于 Token 鉴权。
Authorization: Bearer xxxxxx
如果缺失、格式错误或 Token 过期,接口可能返回 401。
3. Cookie
浏览器会自动携带 Cookie,用于传统 Web 登录态、Session、用户偏好等。
Cookie: JSESSIONID=xxx
4. User-Agent
表示客户端类型,例如浏览器、App、脚本。
有些系统会根据 User-Agent 做兼容或风控。
5. Referer
表示请求来源页面。有些系统会用 Referer 做简单防盗链或安全校验。
6. Accept
表示客户端期望接收的响应格式。
Accept: application/json
7. TraceId / RequestId
有些系统会在请求头或响应头中放链路追踪 ID,用于日志排查。
三、常见响应头
1. Content-Type
表示响应体格式。如果接口返回 JSON,通常是:
Content-Type: application/json
如果返回文件,可能是 application/octet-stream 或其他类型。
2. Set-Cookie
服务端通过响应头设置 Cookie。
Set-Cookie: JSESSIONID=abc; HttpOnly; Secure
登录接口常需要关注它。
3. Location
重定向地址。302 响应中常见。
如果接口返回 302,要看 Location 指向哪里。
4. Cache-Control
控制缓存策略。
如果页面数据不刷新,可能和缓存头有关。
5. Access-Control-Allow-Origin
跨域相关响应头。前后端分离项目中常见。
如果浏览器跨域失败,接口可能实际有响应,但浏览器拦截了。
6. Content-Disposition
文件下载时常见,用来指定文件名。
Content-Disposition: attachment; filename="report.xlsx"
四、请求头在鉴权中的作用
登录态问题经常和 Header 有关。
Token 模式下,后续接口必须带:
Authorization: Bearer token
Session 模式下,后续请求通常带:
Cookie: JSESSIONID=xxx
如果接口返回 401,第一步就要看请求头中是否带了登录凭证。
如果返回 403,则说明可能已认证但无权限,还要结合角色和资源权限排查。
五、Content-Type 常见问题
1. JSON 接口请求头错误
接口要求 JSON:
Content-Type: application/json
但实际传了 form,后端可能收不到参数。
2. 文件上传请求头错误
文件上传一般是:
multipart/form-data
如果写成 JSON,后端无法解析文件。
3. 字符编码问题
中文乱码可能和编码、Content-Type、服务端解析有关。
六、响应头在测试中的作用
1. 登录是否设置 Cookie
登录成功后,如果响应体成功但没有 Set-Cookie,后续页面可能仍未登录。
2. 302 跳转看 Location
未登录访问页面可能返回 302 到登录页。接口自动化如果没处理 302,可能误判。
3. 文件下载看 Content-Disposition
测试下载功能时,要验证文件名、文件类型和内容是否正确。
4. 缓存问题看 Cache-Control
列表数据不刷新时,可以查看是否被缓存。
5. 跨域问题看 CORS Header
前端跨域报错时,要看响应头是否允许当前 Origin、方法和 Header。
七、项目场景:接口返回 401
排查 Header:
- 是否带 Authorization;
- Token 是否有 Bearer 前缀;
- Token 是否过期;
- Cookie 是否丢失;
- 请求域名是否导致 Cookie 不携带;
- 跨域请求是否允许携带凭证。
不要只说“登录失效”,要用 Header 证明。
八、项目场景:POST 参数后端收不到
排查:
- 查看 Content-Type;
- 查看 Request Payload;
- 确认接口文档要求 JSON 还是 form;
- 确认字段名和类型;
- 查看后端日志。
很多“参数没传”其实是 Content-Type 错。
九、项目场景:跨域失败
浏览器控制台提示 CORS 错误时,接口可能在 Network 中看到请求,但浏览器拦截响应。
要看响应头:
Access-Control-Allow-Origin;Access-Control-Allow-Methods;Access-Control-Allow-Headers;Access-Control-Allow-Credentials。
如果前端需要带 Cookie,还要允许 credentials,并且 Origin 不能随便是 *。
十、面试回答模板
如果面试官问“接口测试中请求头和响应头怎么看”,可以这样回答:
接口测试中 Header 很重要。请求头我重点看 Content-Type、Authorization、Cookie、User-Agent、Referer、Accept、TraceId 等。Content-Type 决定后端怎么解析请求体,Authorization 和 Cookie 关系到登录鉴权,TraceId 可以帮助查日志。响应头我会看 Content-Type、Set-Cookie、Location、Cache-Control、Access-Control-Allow-Origin、Content-Disposition 等。比如接口 401 时,我会先看请求头是否带 Token 或 Cookie;POST 参数解析失败时看 Content-Type;302 时看 Location;跨域失败时看 CORS 响应头;文件下载时看 Content-Disposition。
十一、常见追问
追问:Content-Type 有什么用?
告诉服务端请求体格式,比如 JSON、form、multipart。写错会导致参数解析失败。
追问:Authorization 和 Cookie 都能做登录吗?
可以。Token 常放 Authorization,传统 Session 常通过 Cookie 带 Session ID。
追问:302 看哪个响应头?
看 Location,表示重定向目标地址。
追问:跨域看哪些 Header?
看 Access-Control-Allow-Origin、Allow-Methods、Allow-Headers、Allow-Credentials。
十二、练习清单
- 抓包查看请求头;
- 抓包查看响应头;
- 修改 Content-Type 观察接口变化;
- 去掉 Authorization 观察 401;
- 查看登录接口 Set-Cookie;
- 查看 302 的 Location;
- 分析一次跨域问题;
- 分析一次文件下载响应头;
- 用 TraceId 查日志;
- 准备 Header 面试回答。
Header 是接口测试的关键证据。不要只看参数和响应体,很多鉴权、格式、缓存、跨域和文件问题都藏在请求头和响应头里。
配套刷题:

