本地环境没问题,测试环境总报错。
看下面的代码,很简单的一个POST请求。 代码片
.
@RestController
@RequestMapping("/push")
public class PushController {
@Autowired
private PushBotService pushBotService;
@RequestMapping(value = "/pushRobotMsg", method = RequestMethod.POST)
public ApiClientResponse push(@RequestBody PushDto dto) {
return pushBotService.push(dto);
}
使用postman请求本地环境:
使用postman请求测试环境:
明明是相同的代码,为什么到测试环境就报错呢。
虽然我知道绝对不是什么GET,POST方法写错了之类的错误,但我还是百度了,果然网上的帖子并不能解决我的问题。
比较两者区别
比较发现,测试环境使用了域名访问,于是我把测试环境的域名,改成了IP端口。
居然成功了,那就排除代码的问题了。
那为什么域名访问不行,IP可以呢,问题出在域名上。
查看测试环境nginx配置:
果然,nginx这里对http请求做了处理,会全部重定向到https。
请求改成https:
发现请求成功。
总结
这里还存在一个问题,既然nginx配置了http重定向到https,那http请求为什么还会报错呢?
这里是因为nginx配置rewrite这种方式,只会重定向GET请求。所以我们所有的http请求转到https的时候,全部会变成GET请求,导致405报错。
可以修改nginx配置重定向307来解决这个问题。https://www.cnblogs.com/xxoome/p/8950650.html