记录一次http请求失败的问题分析

记录一次http请求失败的问题分析问题背景 当前我有一个基于 Flask 编写的 Restful 服务 由于业务的需求 我需要将该服务打包成 docker 镜像进行离线部署 原始服务的端口是在 6661 端口进行开启 为了区分 在 docker 中启动的服务使用了端口映射 将宿主机上的 6665 端口映射到 docker 容器中已启动服务的 6661 端口

大家好,我是讯享网,很高兴认识大家。

问题背景

当前我有一个基于Flask编写的Restful服务,由于业务的需求,我需要将该服务打包成docker 镜像进行离线部署,原始服务的端口是在6661端口进行开启,为了区分,在docker中启动的服务使用了端口映射,将宿主机上的6665端口映射到docker容器中已启动服务的6661端口.

假设宿主机的ip地址为:192.168.124.234,即如果我请求宿主机的http://192.168.124.234:6665/api/hello,实际上是访问docker容器中的XXXX:6661/api/hello

docker服务启动完成后的显示如下:
在这里插入图片描述
讯享网

问题描述

在组内使用自行部署的接口管理工具中(yapi)进行接口请求,接口显示请求异常,并且该条请求在服务内部日志中也没有显示,但是同样的请求api在其他多种方式下均可正常请求

ps: yapi是通过浏览器打开的网页进行访问的,yapi如果希望在网页上进行访问接口需要安装yapi指定的chrome插件方可在chrome浏览器中进行访问
在这里插入图片描述

正确结果

  1. 当docker完成启动之后我通过postman进行访问,可以正确得到结果:
    在这里插入图片描述
  2. 当我在其他机器乃至docker宿主机上通过curl进行请求,也可以正确得到结果
    在这里插入图片描述
    在这里插入图片描述

问题初判断

由于通过yapi访问访问部署在其他机器的服务均没有问题,并且通过postman、curl进行请求api也没有问题所以肯定的是服务本身是没有问题的
在这里插入图片描述
所以初步判断问题如下:

  • 问题1: api请求是否正确到达docker容器中的服务?
  • 问题2: api请求没有正确到达宿主机?
  • 问题3: api请求没有正确的传出chrome浏览器?(ps:由于请求其他服务器的接口没有问题,最开始并没有这样的怀疑

问题解决

问题1:api请求是否正确到达docker容器中的服务?

由于docker容器中的服务log中没有请求的日志信息记录,所以api请求一定是没有到达docker容器中的服务

问题2:api请求没有正确到达宿主机?

这里需要通过借用tcpdump进行数据抓包,我们通过下面的命令进行监听eno1接口的所有数据包并将数据写入到1.pcap文件中

tcpdump -i eno1 -w 1.pcap 

讯享网

然后我们通过wireshark软件对数据包进行分析

发现我们在使用yapi在chrome中进行接口请求时候,我们并没有抓到请求6665端口的数据包

而我们使用postman或者curl进行访问的时候进行访问的时候都完整的抓到了数据包,所以结论是:通过yapi进行api请求没有正确到达宿主机

问题3:api请求没有正确的传出chrome浏览器?

由于yapi在chrome浏览器中发出的请求,是通过chrome插件进行的,所以我们使用F12查看chrome的debug页面是看不见请求结果的,无论怎么请求都没有反应。

在这里插入图片描述

所以我们通过查看chrome插件的debug页面,然后点击“发送”按钮还是没有反应

在这里插入图片描述
在这里插入图片描述
经过搜索发现chrome插件的调试还有一个background页面可以进行调试,关于chrome插件的backgroud信息可以看这里,我们在插件上用鼠标右键调出如下界面:
在这里插入图片描述
然后点击"背景页",出现如下界面:
在这里插入图片描述
在这里插入图片描述
这时候当我们点击yapi中的“发送”按钮时候,在这个页面中终于发现了报错信息:
在这里插入图片描述

说是(failed)net::ERR_UNSAFE_PORT,也就是我请求的这个端口不安全

这才反应到可能是我的端口设置问题,经过搜索发现:

6665——6669这几个端口是IRC协议使用的缺省端口,存在很大的安全风险,很容易被木马程序利用,被谷歌火狐浏览器屏蔽掉了
在这里插入图片描述

这真是太坑了,千算万算没算到竟然是端口设置的问题,然后被chrome浏览器屏蔽了访问

于是我将端口换了一个,问题完美解决。

收获

后端服务的端口千万不要随便设置
后端服务的端口千万不要随便设置
后端服务的端口千万不要随便设置

参考

6665——6669端口为什么用不了

【干货】Chrome插件(扩展)开发全攻略

小讯
上一篇 2025-03-23 09:32
下一篇 2025-03-11 17:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16795.html