Postman中Content-Type没生效,多半因手动设置与自动头冲突:Headers标签页中若已存在Content-Type,Postman不会覆盖;应删除手动项,交由Postman自动管理,尤其form-data模式下不可强行设application/json。

Postman里Content-Type没生效,多半是这里冲突了
Postman自动添加的 Content-Type 头只在你主动选择 raw → JSON 时才写入,且**不会覆盖已手动添加的同名 Header**。如果你在 Headers 标签页里已经填了一行 Content-Type: text/plain,哪怕 Body 选了 JSON,最终发出的请求头仍是 text/plain——服务器就收不到 JSON 解析指令。
常见错误现象:415 Unsupported Media Type 或后端日志报“无法解析请求体”。
- 检查
Headers标签页:删掉所有手动写的Content-Type行,让 Postman 自动管理 - 若必须自定义(比如加
charset=utf-8),值应写成application/json; charset=utf-8,注意分号后有空格 - 不要在
Body → form-data模式下强行配application/json—— multipart 请求的Content-Type是带 boundary 的,Postman 会自动生成,硬改会导致解析失败
raw 模式下选 JSON 和手动输 application/json 有啥区别
本质区别在于:前者触发 Postman 内部的 JSON 格式校验和自动头注入;后者只是纯文本发送,不校验、不补头、不提示语法错误。
使用场景:
- 开发调试阶段建议用
raw → JSON:输入非法 JSON(如尾逗号、单引号)时,右上角会直接标红提示,省得等响应 400 才回头查 - 需要发非标准 JSON(比如含注释、键名无引号)时,才用
raw → Text+ 手动加Content-Type,但这是例外,不是常规做法 -
raw → JSON模式下,Postman 会默认加Content-Type: application/json,但仅当 Headers 标签页里没有该字段时才生效
为什么开了 JSON 模式,响应里还是返回 HTML 或乱码
这通常不是 Content-Type 设置问题,而是服务器根本没按 JSON 路径处理请求——可能路由错了、参数缺失导致跳转登录页,或后端返回了未捕获异常的 HTML 错误页。
Postman Mac版是一款专为macOS设计的API开发与测试工具,凭借简洁的界面和强大的功能,深受开发者喜爱。它支持发送各种HTTP请求(GET、POST、PUT等),轻松管理接口集合、环境变量和模拟服务器。Mac用户可享受原生性能、快捷键优化及与系统无缝集成的体验,适用于接口调试、自动化测试和文档生成。无论是个人项目还是团队协作,Postman for Mac都能提升API开发效率,是ma
排查要点:
- 看响应状态码:
200但内容是 HTML,大概率是服务端重定向或未认证跳转;500且响应体为 HTML,说明后端抛了未处理异常 - 用
Console标签(View → Show Postman Console)抓真实发出的请求,确认Content-Type确实是application/json,且 Body 没被意外截断 - 检查是否漏了必要 Header,比如
Authorization或X-Requested-With,某些接口会因缺少这些头拒绝 JSON 解析,静默降级为表单处理逻辑
批量测试多个 JSON 接口时怎么避免 Content-Type 配错
靠每次手动点选太容易出错,尤其切换环境或复制请求后忘记改 Body 类型。最稳的方式是用 Collection 的 Pre-request Script 强制统一设置:
pm.request.headers.upsert({key: 'Content-Type', value: 'application/json'});
这样无论 Body 选什么模式,请求头都强制为 JSON;再配合 Tests 里加断言:
pm.test("Content-Type is JSON", () => { pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json"); });
真正关键的不是“怎么设”,而是“设完能不能被验证”——人工眼查不可靠,自动化校验才是防错底线。
















