我不确定这是否是特定于 Flask 的,但是当我在开发模式下运行应用程序 ( http://localhost:5000) 时,我无法从网络上的其他机器访问它 (with http://[dev-host-ip]:5000)。例如,在开发模式下使用 Rails,它可以正常工作。我找不到任何有关 Flask 开发服务器配置的文档。知道应该配置什么来启用它吗?
http://localhost:5000
http://[dev-host-ip]:5000
虽然这是可能的,但您不应在生产中使用 Flask 开发服务器。Flask 开发服务器的设计并不是特别安全、稳定或高效。请参阅有关部署的文档以获取正确的解决方案。
--hostto 选项flask run或tohost参数app.run()控制开发服务器侦听的地址。默认情况下它在 上运行localhost,将其更改为flask run --host=0.0.0.0(或app.run(host="0.0.0.0"))以在您机器的所有 IP 地址上运行。
--host
flask run
host
app.run()
localhost
flask run --host=0.0.0.0
app.run(host="0.0.0.0")
0.0.0.0是一个特殊值,您不能直接在浏览器中使用,您需要导航到网络上机器的实际 IP 地址。您可能还需要调整防火墙以允许外部访问端口。
0.0.0.0
Flask快速入门文档在“外部可见服务器”部分对此进行了解释:
如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。 如果您禁用了调试器或信任网络上的用户,您只需添加 --host=0.0.0.0到命令行即可使服务器公开可用: $ flask run --host=0.0.0.0 这告诉您的操作系统侦听所有公共 IP。
如果您运行服务器,您会注意到服务器只能从您自己的计算机访问,而不能从网络中的任何其他计算机访问。这是默认设置,因为在调试模式下,应用程序的用户可以在您的计算机上执行任意 Python 代码。
如果您禁用了调试器或信任网络上的用户,您只需添加 --host=0.0.0.0到命令行即可使服务器公开可用:
--host=0.0.0.0
$ flask run --host=0.0.0.0
这告诉您的操作系统侦听所有公共 IP。