问题
今日使用Postman调试一个临时接手的API,参照调用程序代码填充好请求头、请求体参数(post),Postman客户端始终提示“400 Bad Request”,调用失败!
解决方案
尝试:
- 观察日志,可确认Postman调用请求并未抵达后端服务;
- 使用IDEA 内置的 HTTP Client 工具,简单配置了请求头和JSON格式的请求体,调试成功。
从请求头、请求体的填充/配置上并无差异,故考虑是Postman上某处设置影响的可能性较大。排除了代理设置的问题,后来观察到Postman在请求头填充部分,默认列出了常用的头属性,我在填充时取消了默认勾选的头属性,仅参照代码填充了 Content-Type 为:application/json。
逐个勾选请求头属性进行尝试,当勾选 Host 属性后,调试成功、同时也发现了 Host 属性后的提示,已明确推荐使用该请求头:
- 添加 Host 头来标识发往服务端的请求的域名,它通常被每个HTTP 客户端隐式(默认)地发送;
- 我们可以删除或填充一个新的值,大多数情况下我们的请求如果不带这个请求头,将返回 HTTP 400 错误。