我在测试我的烧瓶应用程序时遇到了一个奇怪的问题。 我将它减少到以下,让它为'test.py':
if __name__ == '__main__':
from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello():
return 'hello\n'
app.run(debug = True)
所以我只需将其作为:
python test.py
* Running on http://127.0.0.1:5000/
* Restarting with reloader
现在在另一个终端我可以这样做:
>> curl http://localhost:5000/hello
hello
但是,什么行不通,是这样的:
>> curl http://192.168.178.23:5000/hello
curl: (7) couldn't connect to host
ifconfig en1
给出的地方:
[...] inet 192.168.178.23 [...]
最初我想从本地网络中的另一台机器测试我的实际应用程序 - 这就是我遇到这个问题的方式。
我也试过我的浏览器,wget和其他“客户”。
如果我用python内置BaseHTTPServer&替换所有Flask / Werkzeug内容处理程序,事情很好 - 这让我得出结论,下面的烧瓶或werkzeug有一些奇怪的问题,而不是例如使用我的网络配置。
我对所有低级别的io都不太熟悉,所以不知道从哪里开始寻找问题的根源。
如果我在这里错过了一些愚蠢的事情,请提前道歉......
答案 0 :(得分:6)
默认情况下,Flask仅侦听您的loopback接口,因为将调试接口(允许执行任意Python代码)暴露给其他计算机是一个严重的安全风险。要覆盖它,请尝试:
app.run(host='0.0.0.0', debug=True)
但是,请确保您的系统适当地屏蔽不受信任的计算机。