【问题标题】:What's special about port 6000?6000端口有什么特别之处?
【发布时间】: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 中的默认端口),一切正常。

标签: macos web flask


【解决方案1】:

好的,找到答案了。浏览器会阻止某些端口,尽管它们不在系统端口范围内,其中一些在广泛用于本地 Web 开发的范围内。 The links in this answer 指出浏览器供应商和详尽列表的基本原理。正如德国人所说,“Wieder was gelernt”。

感谢@glyphobet,感谢他的评论导致了正确的答案。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2017-02-19
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2013-05-11
    相关资源
    最近更新 更多