首页 > 解决方案 > Django CORS 标头白名单不起作用

问题描述

我正在开发一个由 Django 后端和 ReactJS 前端组成的现有代码库。一切都是码头化的,所以我正在运行后端localhost:8001和前端localhost:3000

因为我在浏览器中遇到了 CORS 错误,所以我将django-cors-headers添加到 Django。但是,当我添加CORS_ORIGIN_ALLOW_ALL = True时,我收到一条错误消息

跨域请求被阻止:同源策略不允许读取位于 '<a href="http://127.0.0.1:8001/devices/" rel="nofollow noreferrer">http://127.0.0.1 的远程资源: 8001/设备/'。(原因:如果 CORS 标头“Access-Control-Allow-Origin”为“*”,则不支持凭证)。

所以我添加了以下设置:

CORS_ORIGIN_ALLOW_ALL = False
CORS_ORIGIN_WHITELIST = (
    'http//:127.0.0.1:3000',
    'http//:127.0.0.1:8001',
)

但比我得到一个错误说

缺少 CORS 标头“Access-Control-Allow-Origin”

为什么白名单不起作用?我在这里做错了吗?

标签: pythondjangoheadercors

解决方案


当您在本地运行前端代码时,在您的浏览器中安装任何跨源浏览器扩展程序,这将很有帮助。

并将白名单网址更改如下(//:应为://):

CORS_ORIGIN_WHITELIST = (
'http://127.0.0.1:3000',
'http://127.0.0.1:8001',
)

推荐阅读