导读:本期聚焦于小伙伴创作的《Flask-CORS配置无效?macOS用户请注意5000端口占用问题》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Flask-CORS配置无效?macOS用户请注意5000端口占用问题》有用,将其分享出去将是对创作者最好的鼓励。

在macOS系统中开发Flask应用时,不少开发者会遇到一个奇怪的问题:已经按照官方文档正确配置了Flask-CORS,前端发起跨域请求时依然被拦截,返回跨域错误。这种情况很多时候不是Flask-CORS配置本身有问题,而是macOS系统默认占用了5000端口导致的。

Flask-CORS配置无效?macOS用户请注意5000端口占用问题

macOS为何会占用5000端口

macOS系统内置了AirPlay接收器功能,该功能默认会监听5000端口用于接收投屏相关的请求。如果你的Flask应用恰好也使用5000端口启动,就会出现端口冲突,此时Flask应用虽然能启动,但实际请求可能被系统的AirPlay服务拦截,导致你配置的Flask-CORS规则无法生效,前端自然就会收到跨域错误提示。

如何确认5000端口被占用

我们可以通过终端命令查看5000端口的占用情况,执行以下命令:

# 查看5000端口的占用进程
lsof -i :5000

如果输出结果中出现ControlCenter相关的进程,就说明5000端口被系统的AirPlay服务占用了。

正确的Flask-CORS配置示例

首先我们先给出标准的Flask-CORS配置代码,排除配置本身的问题:

from flask import Flask
from flask_cors import CORS

# 初始化Flask应用
app = Flask(__name__)
# 全局开启跨域,允许所有来源访问
CORS(app)

@app.route('/api/test')
def test_api():
    return {"msg": "跨域请求成功"}

if __name__ == '__main__':
    # 默认使用5000端口,这里先保留原配置用于对比
    app.run(debug=True)

解决端口占用导致CORS无效的方法

方法一:更换Flask应用启动端口

最简单的方式是修改Flask应用的启动端口,避开5000端口即可,比如换成5001端口:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

@app.route('/api/test')
def test_api():
    return {"msg": "跨域请求成功"}

if __name__ == '__main__':
    # 更换为5001端口,避免和macOS系统服务冲突
    app.run(debug=True, port=5001)

修改后重启应用,前端请求http://127.0.0.1:5001/api/test,跨域配置就会正常生效。

方法二:关闭系统的AirPlay接收器服务

如果你确实需要使用5000端口,可以关闭macOS的AirPlay接收器功能:打开系统偏好设置,找到共享选项,取消勾选AirPlay接收器即可。关闭后再次执行lsof -i :5000命令,确认5000端口没有被占用,再启动Flask应用即可正常使用5000端口。

注意事项

  • 修改端口后,前端请求的地址也要同步更新,否则会出现请求不到服务的问题
  • 关闭AirPlay接收器后,你将无法使用Mac作为AirPlay投屏的接收端
  • 如果更换端口后还是出现跨域问题,再排查Flask-CORS的配置细节,比如是否限制了特定的请求方法、请求头
提示:除了5000端口,macOS还可能会占用7000、8000等端口,遇到类似CORS配置无效的问题时,优先检查端口占用情况可以少走很多弯路。

Flask_CORSmacOS端口占用Flask跨域配置修改时间:2026-07-06 18:00:21

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。