发布API后PUT方法返回400 Bad Request错误如何解决?
PUT接口本地正常部署后返回400 Bad Request 排查思路
1. 请求一致性校验
优先确认本地和服务器的请求配置完全对齐:
- 对比Postman两次请求的所有配置:包括请求路径、URL参数、请求头、请求体,注意Linux服务器对路径大小写敏感,本地Windows/macOS不敏感很容易出现路径大小写不匹配问题
- 检查
Content-Type请求头是否正确设置,比如本地发的是application/json格式,服务器请求有没有误设为form-data/x-www-form-urlencoded - 校验请求参数中的特殊字符、中文、空格有没有做URL编码,本地环境可能自动做了编码处理,服务器侧的反向代理没有自动编码会导致参数解析失败
2. 部署环境差异排查
- 确认服务器部署的代码版本和本地测试的版本完全一致,有没有漏提交参数校验、请求方法限制相关的代码
- 如果服务器前有Nginx、网关等反向代理服务,先绕开代理直接调用服务器本机的API端口测试:如果直接调用正常,就是代理配置问题,常见的有代理限制了请求体大小、过滤了必要请求头、重写了请求路径、拦截了PUT方法
- 检查服务端Web容器(Tomcat、Spring Boot、Node.js服务等)的配置,有没有默认禁止PUT方法,只开放了GET/POST
3. 日志定位问题
- 打开服务端全量请求日志,打印收到的完整请求路径、请求头、请求体,和Postman发送的内容逐一对比,快速定位是否有参数丢失、格式错误
- 开启参数校验框架的错误日志输出:比如Spring Validation、Gin Validator等,400错误大部分场景是参数校验不通过,本地参数符合校验规则,服务器可能因环境变量注入的校验规则和本地不一致触发拦截
4. 常见隐藏坑排查
- 检查跨域配置:是否没有将PUT方法加入允许的请求方法列表,预检OPTIONS请求被拦截导致后续PUT请求返回400
- 确认CSRF校验配置:如果服务端开启了CSRF校验,本地测试时关闭了该配置,服务器默认开启的话,PUT请求未携带CSRF Token会直接返回400
- 校验HTTPS配置:如果服务器用了HTTPS,Postman是否开启了SSL校验,证书无效也可能触发400错误
内容的提问来源于stack exchange,提问作者LALIT
相关产品推荐
相关产品推荐

