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

升级macOS Sequoia后Angular/Flask应用出现CORS错误求助

macOS Sequoia升级后Flask+Angular应用CORS问题排查方案

一、可能的系统层面诱因

  • localhost解析逻辑变更:macOS Sequoia可能调整了DNS解析策略,导致localhost与127.0.0.1不再完全等价。Angular开发服务器默认可能仅绑定localhost而非全网卡地址,因此无法通过127.0.0.1访问;而Flask虽默认绑定127.0.0.1,但系统解析兼容让localhost能访问,不过CORS验证时的origin匹配可能受解析差异影响。
  • 防火墙/隐私权限收紧:新系统可能强化了本地端口的跨域访问拦截,即便代码配置了CORS,系统层面也可能阻断了Access-Control-Allow-Origin响应头的传递。
  • Python依赖环境损坏:系统升级可能导致虚拟环境或依赖包异常,flask-cors包未实际生效,代码中CORS(app)的配置未被正确加载。

二、针对性调试步骤

  1. 验证Flask CORS配置是否生效

    • 用curl直接请求API,检查响应头是否包含Access-Control-Allow-Origin:
      curl -v http://localhost:5000/api/exports/vendors
      
    • 若响应头无该字段,强制重装依赖确保flask-cors正常工作:
      pip install -r requirements.txt --force-reinstall
      
    • 尝试指定明确的origin,避免自动检测失效:
      CORS(app, origins=["http://localhost:4200"])
      
  2. 调整服务器绑定地址

    • Angular启动时绑定全网卡,让localhost和127.0.0.1均可访问:
      ng serve --host 0.0.0.0
      
    • Flask启动时绑定全网卡,消除地址访问差异:
      flask run --host=0.0.0.0
      
  3. 检查系统权限设置

    • 打开「系统设置-网络-防火墙」,确认允许Python、Node.js(Angular进程)的网络访问权限。
    • 检查「隐私与安全性」中的网络相关权限,确保本地应用间通信未被拦截。
  4. 统一IP协议版本

    • 终端执行ping localhost和ping 127.0.0.1,若localhost解析到IPv6地址(::1),而服务器仅绑定IPv4,可强制前后端使用IPv4:
      • Flask启动:flask run --host=127.0.0.1
      • Angular启动:ng serve --host 127.0.0.1

三、额外提示

若之前通过Flask托管Angular静态文件,热重载失效可能是静态文件监听未触发,开发阶段建议分开启动前后端,避免静态托管的干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:32:43