localhost:5000 在 macOS v12(蒙特雷)中不可用
localhost:5000 unavailable in macOS v12 (Monterey)
我无法访问 macOS v12 (Monterey) (Flask 或任何其他端口上本地主机端口 5000 上的 Web 服务器。
例如,使用内置的 HTTP 服务器,我无法访问端口 5000:
python3 -m http.server 5000
... (stack trace)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 48] Address already in use
如果您安装了 Flask 并且 运行 Flask Web 服务器,它不会在启动时失败。让我们以最小的 Flask 示例代码为例:
# Save as hello.py in the current working directory.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
然后运行它(前提是你已经安装了Flask/Python 3):
export FLASK_APP=hello
flask run
输出:
* Running on http://127.0.0.1:5000/
但是,如果您尝试访问此服务器(从浏览器或其他任何工具),它会被拒绝:
curl -I localhost:5000
HTTP/1.1 403 Forbidden
Content-Length: 0
Server: AirTunes/595.13.1
macOS Monterey 在端口 5000 上引入了 AirPlay Receiver运行ning。这会阻止您的 Web 服务器在端口 5000 上提供服务。接收器已经拥有该端口。
您可以:
- 关闭 AirPlay Receiver,或者;
- 运行 不同端口上的服务器(通常最好)。
关闭 AirPlay 接收器
转到系统偏好设置 → 共享 → 取消勾选Airplay Receiver.
您现在应该能够在端口 5000 上重新运行 服务器并得到响应:
python3 -m http.server 5000
Serving HTTP on :: port 5000 (http://[::]:5000/) ...
运行 服务器与 5000 端口不同
最好不再使用端口 5000,因为它是为 macOS Monterey 上的 Airplay Receiver 保留的。
只是到 运行 不同端口上的服务器。无需关闭 Airplay Receiver。
python3 -m http.server 4999
或
export FLASK_APP=hello
flask run -p 4999
我遇到了同样的问题,我将 mac os 从 big sur 升级到 Monterey ,我有一个运行的节点 API在端口 5000 上,由于 API 正在尝试使用正在与 airplay 操作功能一起使用的端口,因此现在失败.
我无法访问 macOS v12 (Monterey) (Flask 或任何其他端口上本地主机端口 5000 上的 Web 服务器。
例如,使用内置的 HTTP 服务器,我无法访问端口 5000:
python3 -m http.server 5000
... (stack trace)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/socketserver.py", line 466, in server_bind
self.socket.bind(self.server_address)
OSError: [Errno 48] Address already in use
如果您安装了 Flask 并且 运行 Flask Web 服务器,它不会在启动时失败。让我们以最小的 Flask 示例代码为例:
# Save as hello.py in the current working directory.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
然后运行它(前提是你已经安装了Flask/Python 3):
export FLASK_APP=hello
flask run
输出:
* Running on http://127.0.0.1:5000/
但是,如果您尝试访问此服务器(从浏览器或其他任何工具),它会被拒绝:
curl -I localhost:5000
HTTP/1.1 403 Forbidden
Content-Length: 0
Server: AirTunes/595.13.1
macOS Monterey 在端口 5000 上引入了 AirPlay Receiver运行ning。这会阻止您的 Web 服务器在端口 5000 上提供服务。接收器已经拥有该端口。
您可以:
- 关闭 AirPlay Receiver,或者;
- 运行 不同端口上的服务器(通常最好)。
关闭 AirPlay 接收器
转到系统偏好设置 → 共享 → 取消勾选Airplay Receiver.
您现在应该能够在端口 5000 上重新运行 服务器并得到响应:
python3 -m http.server 5000
Serving HTTP on :: port 5000 (http://[::]:5000/) ...
运行 服务器与 5000 端口不同
最好不再使用端口 5000,因为它是为 macOS Monterey 上的 Airplay Receiver 保留的。
只是到 运行 不同端口上的服务器。无需关闭 Airplay Receiver。
python3 -m http.server 4999
或
export FLASK_APP=hello
flask run -p 4999
我遇到了同样的问题,我将 mac os 从 big sur 升级到 Monterey ,我有一个运行的节点 API在端口 5000 上,由于 API 正在尝试使用正在与 airplay 操作功能一起使用的端口,因此现在失败.