一、背景:测试环境,和第三方对接,之前接口访问一直正常,有一天对方反馈,测试环境所有接口请求返回状态为 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请求的问题排查小记相关推荐

  1. corspost请求失败_vue项目CORS跨域请求500错误,post请求变options请求

    vue项目CORS跨域请求500,post请求变options请求,到底是什么情况. 提示:以下内容是一个非专业开发的我对跨域的理解,并不10分准确. 一.先介绍为什么明明发送的是Post请求,为什么 ...

  2. 因跨域,post请求变options请求(vue)

    1.options是什么? options在此问题中属于第二种,当涉及到跨域时,并且是post请求时,本地服务器会先发送一个options请求到服务器,如果服务器认为options请求时无危险性且认可 ...

  3. 请解释一下http请求中的304状态码的含义

    请解释一下http请求中的304状态码的含义 304 未被修改. 自从上次请求后,请求的网页未被修改过.服务器返回此响应时,不会返回网页内容. 如果网页自请求者上次请求后再也没有更改过,你应将服务器配 ...

  4. ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的?...

    一.首先修改文件夹属性: 资源管理器    ->    工具    ->    文件夹选项    ->    查看    ->    把简单文件共享的选择去掉(默认是打钩的) ...

  5. 接口定义,常见的接口,常见的接口请求方式,put请求和patch请求的区别

    接口定义:应用程序编程接口,指前后端数据交互的一套标准,包括软件内部之间的接口,硬件之间的接口或者是软件对外的接口. 常见的接口类型:         1,Webservice接口,主要用于服务端的接 ...

  6. 未能从服务器上请求到shsh文件,请重试![12044],苹果4刷机失败开不了机也连接不上电脑怎么办...

    满意答案 zingaro 2014.12.17 采纳率:52%    等级:34 已帮助:29万人 进入DFU模式的方法: 1.保持设备处于开机模式或恢复模式,插入数据线. 2.先按下设备的HOME键 ...

  7. 一个极简的Http请求client推荐,一行搞玩外部请求

    OKHttpUtil 在Java的世界中,Http客户端之前一直是Apache家的HttpClient占据主导,但是由于此包较为庞大,API又比较难用,因此并不使用很多场景.而新兴的OkHttp.Jo ...

  8. 拦截器获取请求参数post_SpringBoot拦截器如何获取http请求参数

    1.1.获取http请求参数是一种刚需 我想有的小伙伴肯定有过获取http请求的需要,比如想 前置获取参数,统计请求数据 做服务的接口签名校验 敏感接口监控日志 敏感接口防重复提交 等等各式各样的场景 ...

  9. ajax jq 图片上传请求头_全面分析前端的网络请求方式:Ajax ,jQuery ,axios,fetch

    链接:https://juejin.im/post/5c9ac607f265da6103588b31 一.前端进行网络请求的关注点 大多数情况下,在前端发起一个网络请求我们只需关注下面几点: 传入基本 ...

最新文章

  1. 智能车竞赛技术报告 | 双车接力组 - 黑龙江工程学院 - 睿龙二队
  2. String Split 和 Join
  3. 【学生信息管理系统】——优化篇(一)
  4. Tensorflow实现MLP
  5. 在c51语言的程序中 注释一般采用,【判断题】在 C51 语言的程序中,注释一般采用 /* */ 和 // 来实现。 (3.0分)...
  6. Kubernetes中使用CronJob定时备份etcd集群数据
  7. 那些年我们踩过的一些坑之 ClickHouse
  8. Filter过滤器~~~编码过滤和登陆验证
  9. mysql 数据删除 索引_MySQL操作之索引创建与删除
  10. 基于JAVA+SpringMVC+MYSQL的在线英语精品课程视频教学平台
  11. html+css+js中的小知识点汇聚(无序 停更)
  12. DeepFaceLab 模型预训练参数Pretrain的使用!
  13. 深度学习GPU显卡选型攻略
  14. 数字转人民币大写,PHP实现
  15. 二元关系的复合、集合幂集的包含关系是格的证明、逻辑相等与划分
  16. Windows API函数 (绘图函数)
  17. 软件设计师(八)汇总-选择题
  18. 五、数组、字符串以及冒泡排序--附代码案例
  19. iphone xr xs_等等,是iPhone“ XS”还是iPhone“ Xs”?
  20. QQ浏览器将完整网页保存为PDF

热门文章

  1. Apache配置与应用
  2. Hadoop是干什么的?
  3. php jq实现抽奖,php 实现抽奖功能
  4. 名词解释:VG、PV、PP、LV、LP
  5. 【JavaScript编程】window.location.search 返回值为空
  6. 极点五笔常用特殊符号编码
  7. 在python中下列代码的运行结果是print abc_下列代码运行结果是?
  8. C Primer Plus 第7章之菜鸟儿的编程题答案
  9. 上升了百分之几怎么算_上涨百分之多少怎么算
  10. JAVA主线程Sleep以后,Eden不断增加