我是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’标头。
你的前端和后端位于不同的端口上,这意味着你的ajax请求受跨源安全性的约束。
你需要设置后端以接受来自不同来源(或只是不同端口号)的请求。
这是我在从Restangular发送API请求时,从Django Rest Framework中收到相同错误时所做的事情。这是在Django Rest Framework的响应中添加CORS(跨源资源共享)标头。没有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可以接受所有来源。