处理 HTTP 服务不能通过本机 IP 请求的问题

今天在调试同事开发的一个 http 服务,在 pc A 上启动以后,发现在另一台 pc B 上无法通过 http://ipA:5000/ 的方式请求,具体报错信息是提示访问被拒绝

一般来说,我们会先在 pc A 上测试下,所以我切回 A,并通过 http://127.0.0.1:5000/ 访问,一切正常,那么说明服务启动是没问题的

接下来,自然的想到是不是防火墙没关,于是检查了一下,发现关了一部分,那么就把剩下的全都关闭,并切回 B 重试,No,仍然提示访问被拒绝

此时,思路还是集中在防火墙上,怀疑是不是没关彻底,于是切回 A 上,通过 http://ipA:5000/ 的方式,奇怪了诶,现象跟在 B 上一样,竟然提示访问被拒绝了

所以现在的问题就是,通过 127.0.0.1 可以访问,但是通过本机 IP 就不可以

顺着问题 google 了一下,怀疑可能是 hosts 文件有特殊设置过,于是检查了一下,并没有异常

这时,有一个观点引起了我的注意:

HTTP 服务是支持设置监听 IP 的

所以排查的方向变为,是否代码中强制监听的是 127.0.0.1?

读了下代码,HTTP 服务是通过 Python Flask 模块开发的,其中一段启动代码用了默认设置

app.run()

这段代码,会默认监听 127.0.0.1:5000。那么问题的原因基本就找到了

这里有一个思维定势,就是以为 127.0.0.1 和本机 IP 是一样的,其实,它们不一样

于是我改了下代码

app.run(host='0.0.0.0', port='5000')

重新启动服务,这时命令行的提示都跟着变了(显示了本机 IP):

* Running on http://192.168.70.226:5000/ (Press CTRL+C to quit)

在 B 上重新测试,请求成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值