You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python Flask接口调用返回403错误的问题

问题描述

在Mac系统上使用Python Flask搭建简易服务,实现代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def hello():
    print("request received")
    return "Hello world!"

    
if __name__ == "__main__":
    app.run(debug=True)

通过python3 main.py命令启动该服务后,使用Postman以GET/POST方法请求地址http://localhost:5000/时,接口始终返回HTTP 403错误。

运行环境信息:

  • Python版本:3.8.9
  • 操作系统:Mac OS 12.4
  • Flask版本:2.1.2
问题原因

Mac OS 12及以上版本系统默认开启AirPlay接收器功能,该功能会默认占用5000端口。启动Flask时如果没有指定其他端口,部分场景下端口占用的提示不明显,此时发往5000端口的请求实际被系统的AirPlay服务接收,该服务不响应普通HTTP接口请求,会直接返回403状态码。

可以先在终端执行以下命令验证端口占用情况:

lsof -i :5000

如果输出的进程名包含ControlCenter或AirPlay相关系统进程,即可确认是端口被占用导致的问题。

解决方案

两种方案二选一即可:

  • 更换Flask服务监听端口:修改代码中app.run的配置,指定一个未被占用的端口(比如5001),修改后代码如下:
    if __name__ == "__main__":
        app.run(debug=True, port=5001)
    
    重新启动服务后,请求地址改为http://localhost:5001/即可正常访问。
  • 释放5000端口:打开Mac系统设置 → 通用 → 隔空播放与接力,关闭「AirPlay接收器」开关,等待端口释放后重新启动Flask服务,即可正常通过5000端口访问接口。

内容的提问来源于stack exchange,提问作者HarshIT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:09:10