Django中CORS Headers未添加的问题求助
Django中CORS Headers未添加的问题求助
Hey 兄弟,看到你遇到的这个CORS问题了,我之前也踩过类似的坑,给你梳理几个排查方向,应该能解决:
首先,先确认你是不是把corsheaders的中间件放对位置了!这个很关键,很多人就是中间件顺序错了导致不生效。你得把corsheaders.middleware.CorsMiddleware放在django.middleware.common.CommonMiddleware的前面,比如这样:
MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 其他中间件... ]
然后,检查你的CORS相关配置有没有设置到位,比如至少要允许你的前端域名访问:
CORS_ALLOWED_ORIGINS = [ "http://localhost:3000", # 改成你的前端实际地址 "http://127.0.0.1:8080", ]
如果是开发环境想快速测试,也可以用CORS_ALLOW_ALL_ORIGINS = True(生产环境可别这么干,不安全)。
另外,你看到的状态码是301,这说明请求被重定向了!比如你后端地址是不是带了斜杠或者没带斜杠导致的?比如前端请求http://backend.com/api,但后端实际路由是http://backend.com/api/,这时候会触发301重定向,而重定向后的响应可能没带上CORS头,所以浏览器报错。你可以试试把请求地址补全斜杠,或者在Django里设置APPEND_SLASH = False(如果不需要自动加斜杠的话)。
最后再确认下,你已经正确安装了django-cors-headers包,没装的话先跑pip install django-cors-headers,并且INSTALLED_APPS里已经添加了'corsheaders'。
按这几步排查下来,应该能解决你的问题啦!
备注:内容来源于stack exchange,提问作者Joshua Singla
相关产品推荐
相关产品推荐

