【发布时间】:2020-03-18 01:19:29
【问题描述】:
启动您的 Mac。从quickstart page 获取基本 Flask 应用程序,并将端口更改为 6000,这将为您提供以下内容:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.debug = True
app.run(port=6000)
将其保存在一个名为 e.g. 的文件中。 test.py。然后创建一个virtualenv,运行pip install flask,调用test.py。以下是您将在终端上看到的内容:
* Running on http://0.0.0.0:6000/ (Press CTRL+C to quit)
* Restarting with stat
因此 Flask 声称已绑定到端口 6000。现在启动浏览器并导航到 localhost:6000。我期待看到愚蠢的消息Hello World,当我将port 参数省略到run 并导航到localhost:5000 时就是这种情况。但这是我看到的:
现在在终端上执行Ctrl-C,并停止正在运行的进程。将端口更改为 6001,重新运行命令。 Hello World 回来了!怎么会这样?没有其他进程连接到 6000 端口; lsof -i | grep 6000 返回 0 个结果,如果有任何进程,Flask 将首先无法绑定到该端口。防火墙已关闭。
有什么想法吗?
【问题讨论】:
-
Firefox 给出了一个稍微不同但信息更丰富的答案:“此地址使用的网络端口通常用于网页浏览以外的目的。Firefox 已取消对您的保护请求。”
-
有趣。看起来 6000 端口引起了许多重大的安全问题,也许浏览器因此而阻止了它? speedguide.net/port.php?port=6000
-
剧情变厚了!我实际上可以使用 wget 访问localhost:6000,它成功获取了
Hello World。似乎是浏览器的东西。 -
这是错字还是您尝试访问端口 5000?
-
@Thomas 我希望应用程序绑定到 6000(有效)并使用 localhost:6000 上的浏览器访问它(无效)。使用端口 5000(Flask 中的默认端口),一切正常。