Nginx强制配置301永久跳转后,APP发起POST请求会出现405错误,这是因为301跳转的操作让浏览器把POST请求变成了GET请求。
示例
- 301跳转示例:
1 | return 301 https://www.xxx.com$request_uri; |
- 解决办法:
1 | return 307 https://www.xxx.com$request_uri; |
状态码
301 Moved Permanently
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一
307 Temporary Redirect
请求的资源现在临时从不同的URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求
308 永久重定向
308状态代码[永久重定向],类似于301(永久移动),但不允许将请求方法从POST更改为GET.
301和308的区别
在 HTTP 协议中, 308 Permanent Redirect(永久重定向)是表示重定向的响应状态码,说明请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。在重定向过程中,请求方法和消息主体不会发生改变!
然而在 301 状态码的情况下,请求方法有时候会被客户端错误地修改为 GET 方法
参考:Linux运维笔记
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/08/23/Nginx-301重定向到HTTPS的问题/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!