post请求302以及post请求变更为get请求的问题排查小记
一、背景:测试环境,和第三方对接,之前接口访问一直正常,有一天对方反馈,测试环境所有接口请求返回状态为 302。
对方请求 (具体数据忽略)
curl -X POST -H 'Content-Type:application/json' --data '{ "version": "1.0",.......}' 'http://xx.com/xx/xx'
二、验证过程:
在公司内网:
1、同样以以上方式,基于对方请求的某一个接口和参数进行接口调用,发现我们自己内部调用正常。
2、用postman 测试也是正常
改用外网:
1、用命令的形式执行,问题复现,出现302
2、用postman 或者网页版在线http请求的方式进行post调用,接口能通,但是内部错误是Request method 'GET' not supported,明显是把post请求,莫名的转为了get请求。
初步结论:
1、接口服务没问题,肯定是某些运维环境的变动引起的
2、内网访问正常,外网就不正常,应该和域名路由转发规则有关
三、排查过程:
1、猜想是否有外网白名单限制?
细想,302 表示已经访问通了,只是未重定向到最终的资源目标,事实测试环境公司未对外网ip 做白名单限制
2、猜想运维环境或者测试环境有特别的配置变动
运维同事和测试负责人皆说环境未变动 (头大)
3、公司的域名转发配置的问题?
查阅了相关nginx的资料,发现nginx 的不当配置是可能会引起重定向找不到最新的资源,以及post 请求转为get请求的,资料如下
https://www.cnblogs.com/xxoome/p/8950650.html
https://www.cnblogs.com/ybyqjzl/articles/10352571.html
再次询问运维的同事和测试组的负责人,会不会是不是nginx配置的问题,依然说自己的配置没变动,并且说,测试环境不是通过nginx 做域名转发的,说是容器服务,让追问下其他技术部门容器服务的负责人,看看
4、容器部门负责人说,现在外网统一使用https ,修改为https 服务即可
修改https 访问,问题解决
5、自问: k8s 容器服务到底怎么处理的
本质上应该和nginx 性质一样,为了一探究竟,简单查询了相关资料,略有了解,k8s 可以配置禁止http 强制转https 服务,以及k8s 域名配置及转发规则的配置,附上查阅的资料:
k8s容器服务:如何不让ingress重定向HTTP请求
https://developer.aliyun.com/ask/15659?spm=a2c6h.13159741
TKE容器服务创建ingress
https://cloud.tencent.com/developer/article/1354241
6、内网访问和外网访问接口,是怎么控制域名转发规则的,为什么内网访问http、https就正常,外网就需要https
首先肯定也是通过域名转发规则走的
四、总结
其实整个过程,还是发现一些问题的,外网的黑白名单限制未处理,部门协作分工问题(测试环境的工作,运维基本不管,容器服务的工作,测试和运维也不了解,导致走了很多弯路),当然自身对公司部门分工及k8s 容器的知识也还是欠缺了解。
post请求302以及post请求变更为get请求的问题排查小记相关推荐
- corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求
vue项目CORS跨域请求500,post请求变options请求,到底是什么情况. 提示:以下内容是一个非专业开发的我对跨域的理解,并不10分准确. 一.先介绍为什么明明发送的是Post请求,为什么 ...
- 因跨域,post请求变options请求(vue)
1.options是什么? options在此问题中属于第二种,当涉及到跨域时,并且是post请求时,本地服务器会先发送一个options请求到服务器,如果服务器认为options请求时无危险性且认可 ...
- 请解释一下http请求中的304状态码的含义
请解释一下http请求中的304状态码的含义 304 未被修改. 自从上次请求后,请求的网页未被修改过.服务器返回此响应时,不会返回网页内容. 如果网页自请求者上次请求后再也没有更改过,你应将服务器配 ...
- ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的?...
一.首先修改文件夹属性: 资源管理器 -> 工具 -> 文件夹选项 -> 查看 -> 把简单文件共享的选择去掉(默认是打钩的) ...
- 接口定义,常见的接口,常见的接口请求方式,put请求和patch请求的区别
接口定义:应用程序编程接口,指前后端数据交互的一套标准,包括软件内部之间的接口,硬件之间的接口或者是软件对外的接口. 常见的接口类型: 1,Webservice接口,主要用于服务端的接 ...
- 未能从服务器上请求到shsh文件,请重试![12044],苹果4刷机失败开不了机也连接不上电脑怎么办...
满意答案 zingaro 2014.12.17 采纳率:52% 等级:34 已帮助:29万人 进入DFU模式的方法: 1.保持设备处于开机模式或恢复模式,插入数据线. 2.先按下设备的HOME键 ...
- 一个极简的Http请求client推荐,一行搞玩外部请求
OKHttpUtil 在Java的世界中,Http客户端之前一直是Apache家的HttpClient占据主导,但是由于此包较为庞大,API又比较难用,因此并不使用很多场景.而新兴的OkHttp.Jo ...
- 拦截器获取请求参数post_SpringBoot拦截器如何获取http请求参数
1.1.获取http请求参数是一种刚需 我想有的小伙伴肯定有过获取http请求的需要,比如想 前置获取参数,统计请求数据 做服务的接口签名校验 敏感接口监控日志 敏感接口防重复提交 等等各式各样的场景 ...
- ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch
链接:https://juejin.im/post/5c9ac607f265da6103588b31 一.前端进行网络请求的关注点 大多数情况下,在前端发起一个网络请求我们只需关注下面几点: 传入基本 ...
最新文章
- 智能车竞赛技术报告 | 双车接力组 - 黑龙江工程学院 - 睿龙二队
- String Split 和 Join
- 【学生信息管理系统】——优化篇(一)
- Tensorflow实现MLP
- 在c51语言的程序中 注释一般采用,【判断题】在 C51 语言的程序中,注释一般采用 /* */ 和 // 来实现。 (3.0分)...
- Kubernetes中使用CronJob定时备份etcd集群数据
- 那些年我们踩过的一些坑之 ClickHouse
- Filter过滤器~~~编码过滤和登陆验证
- mysql 数据删除 索引_MySQL操作之索引创建与删除
- 基于JAVA+SpringMVC+MYSQL的在线英语精品课程视频教学平台
- html+css+js中的小知识点汇聚(无序 停更)
- DeepFaceLab 模型预训练参数Pretrain的使用!
- 深度学习GPU显卡选型攻略
- 数字转人民币大写,PHP实现
- 二元关系的复合、集合幂集的包含关系是格的证明、逻辑相等与划分
- Windows API函数 (绘图函数)
- 软件设计师(八)汇总-选择题
- 五、数组、字符串以及冒泡排序--附代码案例
- iphone xr xs_等等,是iPhone“ XS”还是iPhone“ Xs”?
- QQ浏览器将完整网页保存为PDF