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

VSCode调试FastAPI时出现CORS跨域错误但命令行运行正常的问题求助

VSCode调试FastAPI时出现CORS跨域错误但命令行运行正常的问题求助

嘿,我一眼就瞅出问题出在哪了!咱们来拆解下:

你命令行启动API时,传给uvicorn.run的是已经包装了CORSMiddleware的cors_app,但VSCode调试时,你直接指定了原始的app实例(也就是services.api.app.main:app),完全没带上那个CORS中间件!这就导致调试模式下的API根本没配置CORS规则,自然会触发跨域错误。

问题根源对比

  • 命令行模式:启动的是加了CORS中间件的cors_app
  • VSCode调试模式:启动的是未做任何CORS配置的原始app

解决方法(选一个就行)

方法1:直接给原始app挂载CORS中间件(推荐)

把你的代码改成直接给app添加中间件,不用额外创建cors_app:

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

# 直接给app挂载CORS中间件
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_methods=["*"],
    allow_headers=["*"],
)

# 其他路由逻辑...

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(
        app,
        host="0.0.0.0",
        port=8000,
        log_config=LOGGING_CONFIG,
    )

这样不管是命令行运行还是VSCode调试,app都会带上CORS规则。

方法2:修改VSCode的launch.json,指向包装后的cors_app

如果不想改动main.py的结构,可以在main.py末尾把cors_app暴露出来:

# 保留你原来的代码,最后加一行暴露cors_app
cors_app = CORSMiddleware(app=app, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"])

然后修改launch.json的args:

{
  "name": "Python Debugger: FastAPI",
  "type": "debugpy",
  "request": "launch",
  "module": "uvicorn",
  "args": ["services.api.app.main:cors_app", "--reload"], 
}

这样调试时就会启动带CORS配置的cors_app了。

方法3:用单独的启动脚本统一管理

写一个start.py脚本专门处理API启动:

from services.api.app.main import app
from fastapi.middleware.cors import CORSMiddleware
import uvicorn

cors_app = CORSMiddleware(app=app, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"])

if __name__ == "__main__":
    uvicorn.run(
        cors_app,
        host="0.0.0.0",
        port=8000,
        log_config=LOGGING_CONFIG,
    )

命令行运行python start.py,VSCode调试的话,把launch.json改成:

{
  "name": "Python Debugger: FastAPI",
  "type": "debugpy",
  "request": "launch",
  "program": "${workspaceFolder}/start.py",
  "args": ["--reload"]
}

这样不管哪种启动方式,用的都是同一个带CORS的实例。

试一下上面的方法,应该就能解决你的跨域问题啦!

备注:内容来源于stack exchange,提问作者Clayton Stetz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 08:58:04