Flask只在127.0.0.1上监听,忽略主机参数

9 投票
1 回答
15174 浏览
提问于 2025-04-18 12:56

我在Windows 7上使用Flask,下面是Flask和相关版本的信息:

Flask==0.10.1
Werkzeug==0.9.3

我可以在同一台电脑上通过 http://127.0.0.1:5000 访问这个应用,但在局域网内的另一台电脑上访问 http://192.168.101.103:5000 就失败了。

我用这些参数启动应用:

#app.py
if __name__ == '__main__':
    app.run( host='0.0.0.0:5000')

有一点我不明白的是,当我在同一台电脑上启动netcat(一个网络工具),而Flask也在同一个端口上监听时,netcat可以正常工作,而且从另一台电脑也能访问:

>c:\Python27\python manage.py runserver
>
 * Running on http://127.0.0.1:5000/
 * Restarting with reloader

可以正常工作...

>nc -l -p 5000

在同一台电脑上,同一个端口也可以正常工作???

GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: de-DE
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0;

Accept-Encoding: gzip, deflate
Host: 192.168.101.103:5000
DNT: 1
Connection: Keep-Alive

甚至可以接受来自另一台电脑的连接???

所以,除了显而易见的问题,如何让Flask在局域网中服务外,我很好奇,为什么同一台机器上的两个进程可以在同一个端口上监听?

谢谢!

1 个回答

12

这里提到的 端口 是一个单独的参数:

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

撰写回答