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

Django-Angular跨域请求报错:Content-Type不被CORS允许

问题原因分析
  • 后端配置缺失:Django的CORS_ALLOW_HEADERS仅配置了access-control-allow-origin,但你的请求携带了Content-Type和Accept头,预检请求时服务器返回的允许头列表不包含这两项,触发浏览器的CORS拦截机制。
  • 前端冗余配置:请求中添加的Access-Control-Allow-Headers属于服务器响应头,前端无需在请求里设置,这个配置完全无效。
解决方案

后端Django配置修改

更新CORS_ALLOW_HEADERS,包含请求实际用到的头字段:

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = [
    "content-type",
    "accept",
    "access-control-allow-origin",
]

如果是开发环境,也可以直接开启全量允许简化配置(生产环境不推荐):

CORS_ALLOW_ALL_HEADERS = True

前端Angular代码修改

移除冗余的Access-Control-Allow-Headers配置:

return this.http.post(url, data, 
    {headers: new HttpHeaders({
        'Content-Type': 'application/json',
        'Accept': 'application/json',
    })}
)
提问方式改进建议
  • 补充django-cors-headers的具体版本,不同版本的配置规则可能存在差异;
  • 说明请求的业务场景(比如是否是JSON数据提交、表单提交),帮助更快定位问题;
  • 附上Django项目的中间件配置,确认corsheaders.middleware.CorsMiddleware是否正确添加到MIDDLEWARE列表且顺序合理(需放在django.middleware.common.CommonMiddleware之前)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:07:03