我是 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 但我收到错误 “请求的资源上不存在‘Access-Control-Allow-Origin’ header 。因此不允许访问来源‘http://www.local:54521’”。 这个问题的解决方案是什么? 我也按照“https://gist.github.com/strogonoff/1369619”中的步骤操作,但问题仍然存在。
最佳答案
这是我在从 Restangular 发送 API 请求时从 Django Rest Framework 收到相同错误时所做的。 这样做是将 CORS(跨源资源共享) header 添加到来自 Django Rest Framework 的响应中。没有 CORS header 是错误的原因。
在 Django 项目根文件夹(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 允许接受所有来源。
关于django - Django 中的 "No ' 访问控制允许来源 ' header is present on the requested resource",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22476273/