Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django CORS headers白名单没有';行不通_Python_Django_Header_Cors - Fatal编程技术网

Python Django CORS headers白名单没有';行不通

Python Django CORS headers白名单没有';行不通,python,django,header,cors,Python,Django,Header,Cors,我正在处理一个现有的代码库,它由一个Django后端和一个ReactJS前端组成。 所有内容都已停靠,因此我在localhost:8001上运行后端,在localhost:3000上运行前端 因为我在浏览器中遇到了CORS错误,所以我将其添加到Django。然而,当我添加CORS\u ORIGIN\u ALLOW\u ALL=True时,我得到一个错误 已阻止跨源请求:同源策略不允许读取“”处的远程资源。(原因:如果CORS标头“Access Control Allow Origin”为“*”,

我正在处理一个现有的代码库,它由一个Django后端和一个ReactJS前端组成。 所有内容都已停靠,因此我在
localhost:8001
上运行后端,在
localhost:3000
上运行前端

因为我在浏览器中遇到了CORS错误,所以我将其添加到Django。然而,当我添加
CORS\u ORIGIN\u ALLOW\u ALL=True
时,我得到一个错误

已阻止跨源请求:同源策略不允许读取“”处的远程资源。(原因:如果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标头“访问控制允许来源”


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

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

并更改白名单url,如下所示(//:应为://):


当您拥有
CORS\u ORIGIN\u ALLOW\u ALL=True
时,这将设置
Access Control ALLOW ORIGIN:
,并且正如允许所有域进行跨源请求时出现的错误所示,您无法随请求传递
凭证
标志。因此,如果您希望将标题保持为
访问控制允许来源:
,最简单的修复方法是在从前端发送CORS请求时不使用
凭证
标志

如果您只想允许特定的域(这是最好的),您需要首先找到有效的域。请记住,这些域是向Django发送请求的原始域。你可以通过查看找到它们
request.META
是WSGI看到并传递的环境,如果中间有一些代理,则会给出代理链中的最后一个主机

如果您有一个与WSGI对话的web服务器,例如
nginx
,它将把
远程\u主机
传递给您的Django应用程序或您拥有的任何中间WSGI服务器(例如
uWSGI
/
gunicorn
),然后他们将其传递给您的应用程序


此外,在您的设置中,
CORS\u ORIGIN\u WHITELIST
中的URL格式错误;scheme和netloc之间的分隔符是
://
,而不是
/:
,例如:

http://127.0.0.1:3000

输入错误:问题中显示的设置值以
http/:
开头,但它们应该以
http://
开头。
http://127.0.0.1:3000