我是django的新手,并将其用作创建用户的应用程序的后端。在前端,发布用户名的代码是:
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('POST', "http://www.local:8000/create_user/", true);
xobj.setRequestHeader("Access-Control-Allow-Origin", "*");
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
console.log(xobj.responseText);
}
}
xobj.send(json);
在后端,与url相关的函数处理json,但我收到错误消息"No 'Access-Control-Allow- Origin‘header is present on the requested .Origin 'http://www.local:54521’is not allowed access“。这个问题的解决方案是什么?我也遵循了"https://gist.github.com/strogonoff/1369619“中的步骤,但问题仍然存在。
发布于 2014-03-18 19:10:07
您的前端和后端位于不同的端口上,这意味着您的ajax请求受到跨域安全性的影响。
您需要将后端设置为接受来自不同来源(或只是不同端口号)的请求。
试着阅读CORS,更具体地说是django cors headers
发布于 2015-06-21 01:15:11
下面是当我从Restangular发送API请求时,从Django Rest Framework得到同样的错误时所做的事情。这样做的目的是将CORS (Cross-Origin Resource Sharing)头添加到Django Rest框架的响应中。没有CORS标头是导致错误的原因。
在Django Project根文件夹( manage.py文件所在的位置)中,执行以下操作:
pip install django-cors-headers
我尝试使用virtualenv,但无法让它工作,所以我在没有切换到virtualenv的情况下安装了它。
安装后,您必须对django settings.py进行一些编辑
INSTALLED_APPS = (
...
'corsheaders',
...
)
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
CORS_ORIGIN_ALLOW_ALL = True
将上面的设置为true允许接受所有来源。
发布于 2016-03-14 20:48:18
在我的例子中,我只是忘了在REST API URL的末尾添加一个尾随斜杠。也就是说,我有这个:
http://127.0.0.1:8000/rest-auth/login
而不是这样:
http://127.0.0.1:8000/rest-auth/login/
https://stackoverflow.com/questions/22476273
复制相似问题