MacOS如何向本地网络开放端口:实现Flask本地服务器的局域网访问
MacOS 开放Flask服务局域网访问的配置流程
第一步:改对Flask服务的启动绑定参数
Flask默认启动的时候,只会绑定本地回环地址127.0.0.1,这个状态下只有Mac自己能访问服务,同网络下其他设备的请求会被Flask直接拒掉。必须调整启动配置,让服务能监听所有可被局域网访问的网络接口:
- 如果用flask命令行启动服务,执行命令的时候追加host参数就行:
flask run --host=0.0.0.0 --port=自定义服务端口
比如用默认5000端口的最简启动命令就是:flask run --host=0.0.0.0 - 如果是靠Python代码里的
app.run()启动服务,就把启动参数改成下面的写法:app.run(host='0.0.0.0', port=自定义服务端口)
这里的0.0.0.0不是指绑定某个远程地址,是说不锁死本机回环,所有指向这个端口的局域网请求都能接收到。
第二步:放行MacOS系统防火墙的传入连接
这是最容易踩的坑,很多人改完Flask参数还是连不上,基本都是系统防火墙拦了请求:
- 打开Mac系统设置,找到「网络」分类下的「防火墙」配置页
- 千万不要开「阻止所有传入连接」的开关
- 点进防火墙的「选项」列表,找到跑Flask服务的那个程序(可能是终端、Python解释器、VS Code、PyCharm这类),勾选它的「允许传入连接」权限
- 保存配置之后规则马上生效,不用重启系统
第三步:拿到Mac的局域网访问地址
前面两步都配完,就得找对Mac在本地网络里的内网IP,不然别的设备不知道往哪个地址发请求:
- 打开终端跑个命令:
ifconfig | grep "inet " - 从输出里找对应网卡的内网地址——连WiFi的话一般是en0接口下的地址,插网线的话一般是en1接口下的,通常是192.168.x.x、10.0.x.x这类,别把127.0.0.1当访问地址
- 同网络下的手机、其他电脑,直接在浏览器输
http://你的Mac内网IP:服务端口就能打开Flask页面,比如http://192.168.5.20:5000
连不上的时候先排查这几个点
- 别给别的设备发127.0.0.1、localhost的链接,这些地址在别的设备上指的是设备自己,根本碰不到Mac上的服务
- 确认Mac和要访问的设备连的是同一个WiFi/同一个局域网,别路由器开了AP隔离把设备之间的通信给断了
- 如果换了Flask的启动端口,记得同步把访问地址里的端口号改成一致的,不然端口对不上肯定连不上
内容的提问来源于stack exchange,提问作者mathiasminacapilli
相关产品推荐
相关产品推荐

