Postman自动生成Content-Type头后手动添加第二条会导致HTTP协议违规,服务器常返回400或415错误;应删除手动条目,仅保留自动生成的那条,尤其multipart/form-data必须含动态boundary参数。

Postman自动添加Content-Type后又手动加了一条怎么办
Postman在你选择Body类型(如form-data、raw、x-www-form-urlencoded)时,会**自动生成且锁定**一条Content-Type头。如果你再手动在Headers标签页添加第二条Content-Type,Postman会保留两条——但HTTP协议只允许一个Content-Type字段,服务器收到后通常直接拒收,返回400 Bad Request或415 Unsupported Media Type。
这不是Postman的bug,是它“不阻止你犯错”的设计逻辑:它信任你清楚自己在做什么。
- 检查Headers列表里是否出现两行都以
Content-Type开头的条目(哪怕值看起来一样) - 删除手动添加的那条,只保留Postman自动生成的那条(通常带
boundary=参数或明确的MIME类型) - 如果不确定哪条是自动生成的:切换回Body标签页,改选一次其他类型再切回来,Postman会刷新并重置为唯一一条
为什么multipart/form-data的Content-Type总带boundary参数
因为multipart/form-data不是固定字符串,而是一种分段消息格式。每段之间必须用一串唯一的随机字符串隔开,这个字符串就是boundary。Postman每次发送请求都会生成新的boundary,并把它写进Content-Type头里,例如:Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryabc123。
如果你手动覆盖了这条头,比如只填multipart/form-data而没带boundary,或者复制了旧请求里的boundary复用,服务端就无法正确切分字段,尤其文件部分会解析失败。
Postman 12.27.7 Windows x64 官方安装包,适用于 API 设计、调试、测试与协作。该系列包含 Enterprise 云端性能测试静态 IP 出口能力,以及接口规范标签管理改进,适合受限网络测试与规范资源组织场景。
- 永远不要手动编辑
multipart/form-data的Content-Type值 - 不要从别的请求里复制整条
Content-Type头过来粘贴 - 如果需要调试,可在Console里看Postman实际发出的原始请求,确认
boundary是否出现在头和body中且一致
application/json请求被拦截,是不是Content-Type重复了
不一定。JSON请求触发预检(OPTIONS)的根本原因是Content-Type: application/json属于非简单请求,浏览器会先发一次预检,而不是因为头重复。但如果你在Headers里手动加了Content-Type,而Body又选了raw → JSON,Postman其实会生成两条:
- 一条由
raw类型自动注入:Content-Type: application/json - 另一条是你手动加的,可能带
; charset=UTF-8——这违反RFC规范,Spring Boot 2.6+等框架会直接拒绝
这种组合会导致415 Unsupported Media Type,错误信息里常带charset=UTF-8字样,本质是非法参数,不是重复本身的问题。
- 删掉手动加的
Content-Type,只靠Body类型驱动 - 若需额外头(如
Authorization),加在别处,绝不碰Content-Type - 遇到
415先查响应头里的Allow或Supported Content Types字段,确认服务端真正接受什么
如何一眼识别Postman里有没有重复Content-Type
最稳的办法不是靠眼睛扫,而是打开Postman右上角的Console(View → Show Postman Console),发一次请求,点开日志里的请求详情,在Headers区块里找——如果有两条Content-Type:,会并排显示,非常醒目。注意大小写不敏感,content-type也算。
另一个信号是:当你在Headers里新增一行,Key输入Content-Type时,Postman不会报错或警告,但它会在你点击Send后悄悄忽略你这行(如果已有自动生成的),也可能保留两行——行为取决于Postman版本,不可依赖。
- 养成习惯:每次调接口前,先开Console,发一次空请求看原始头
- 团队协作时,把Body类型写在集合描述里,避免有人误切到Headers去“补”头
- 真正容易被忽略的是:某些Postman脚本(Pre-request Script)里用
pm.request.headers.add()偷偷加了第二条,得查脚本
















