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

在Vercel部署Django+React项目遭遇CORS跨域错误求助

解决Vercel部署Django项目的CORS跨域问题

1. 修复vercel.json的语法错误

你的vercel.json中使用了中文双引号,JSON语法要求必须使用英文双引号,这会导致Vercel无法正确解析配置,请求无法正常转发到Django后端,自然不会返回CORS相关响应头。修改后的正确配置如下:

{
  "builds": [
    {
      "src": "backend/wsgi.py",
      "use": "@vercel/python",
      "config": { "maxLambdaSize": "15mb" }
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "backend/wsgi.py"
    }
  ]
}

2. 完善Django的CORS配置

虽然你已经开启了CORS_ALLOW_ALL_ORIGINS = True,但可以补充以下配置,确保预检请求(OPTIONS)被正确处理:

# settings.py
CORS_ALLOW_METHODS = [
    "DELETE",
    "GET",
    "OPTIONS",
    "PATCH",
    "POST",
    "PUT",
]

CORS_ALLOW_HEADERS = [
    "accept",
    "accept-encoding",
    "authorization",
    "content-type",
    "dnt",
    "origin",
    "user-agent",
    "x-csrftoken",
    "x-requested-with",
]

这些配置覆盖了常见的请求方法和请求头,避免预检请求因权限不足被拦截。

3. 验证Vercel部署状态

  • 重新部署项目,确保vercel.json的修改被Vercel读取。可以在Vercel控制台查看部署日志,确认build规则和路由配置是否生效。
  • 在浏览器开发者工具的Network面板中,查看预检OPTIONS请求的响应头,确认是否存在Access-Control-Allow-Origin字段。如果仍未出现,说明请求未到达Django后端,需要再次检查Vercel路由规则是否匹配。

4. 带凭证请求的额外配置

如果你的前端请求需要携带Cookie或认证信息,需在settings.py中添加:

CORS_ALLOW_CREDENTIALS = True

同时确保前端请求中开启withCredentials: true(比如React中使用axios时配置axios.defaults.withCredentials = true)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:12:36