栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ngxin做http强制跳转https,接口的POST请求变成了GET

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ngxin做http强制跳转https,接口的POST请求变成了GET

背景

一个域名为 https://www.haha.com, 用http进行post请求访问接口时,某个大佬粗心将url写成了http://www.haha.com。结果,post请求变成get请求,获取不到传过来的参数。
查看nginx日志:
一条日志显示:http方式请求过来,服务器响应301状态码
第二条日志显示:后续又用https方式请求过来,服务器响应200状态码。

相关状态码解析

301 Moved Permanently
被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一;

302 Found
要求客户端执行临时重定向(原始描述短语为“Moved Temporarily”)。[20]由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
新的临时性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。
如果这不是一个GET或者HEAD请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。
注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,并且使用GET方式访问在Location中规定的URI,而无视原先请求的方法。因此状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。

307 Temporary Redirect
请求的资源现在临时从不同的URI 响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求

从上面我们可以看出,301跳转是永久重定向,而307是临时重定向。


解决办法

方法一:修改url 改成https://www.haha.com.
方法二:修改nginx层配置,在server里配置return 307 https://servername/request_uri;
307:对于 POST 请求,表示请求还没有被处理,客户端应该向 Location 里的 URI 重新发起 POST 请求

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号