问题背景
今天有个盆友碰见一个很有趣的问题,他在本地写了个接口,想要用Postman做一下测试,接口写法没问题,项目启动也非常正常,但是在Postman里一调就报错“400 Bad Request”。
老哥火急火燎地找到我,我跟着他一起把代码看了一个遍,配置也瞧了一圈,代码本身是没啥问题的,用的json作为POST接口入参,各种注释也都正常写了;Postman里面URL,参数,Content-Type,token等数据也都是正常写进去的,看着完全没有问题,那到底是咋回事呢?排查了一中午愣是没有看出问题来,搞得我好奇心膨胀。
后来午饭时候,我把接口地址后半段删除,只保留ip,发现Send后还是返回400 Bad Request,直接访问根目录也存在异常,那应该就是在请求发送的环节出了什么问题。于是我俩对着Postman的配置重新一项一项检查,最后发现原因是这位同学Postman用的不是很熟练,他在配置时,把headers里面hidden的项目手动做了编辑,手动打掉了Host前面的对勾,发送请求时未携带Host,导致报错。原因找到了。
问题原因
如果Headers中不勾选Host,调用接口就会报400 Bad Request错误。
解决方案
把Host勾上就可以了。
另外:Postman headers中hidden的项目可以不用手动取消勾选,如果需要自定义,在下面手动写上一份就是了,会自动覆盖的。