写了一个查询单词的 api,因为可以批量查询,所以支持 get 和 post 两种方式。在本地测试没有问题,但放到线上就出现了 post 变成 get 的情况。
查了一下是因为 nginx http 强转 https 导致的。本地 postman 请求改成 https 确实是可以的。
对于 http 强转 https,我用的是 301 永久重定向。而对于 301,浏览器会用 get 方式重新请求资源。这就导致了 post 变成 get。
除了 301,还有个 307 临时重定向。307 指示浏览器用原来的请求方式和数据再次请求。但是,对于 post 请求,浏览器会弹出确认框,需要用户确认才会再次请求。所以,307 基本没法用。
没办法,注意点吧,请求的时候统一用 https 好了。
https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect