报错:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.local:54521' is therefore not allowed access?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我是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-ALL-Oriue’头”。起源‘http://www.local:54521“因此不允许进入”。这个问题的解决办法是什么?我也遵循了“https://gist.github.com/strogonoff/1369619“但问题依然存在。

提问于
用户回答回答于

您的前端和后端位于不同的端口上,这意味着Ajax请求受到跨源安全性的限制。

您需要设置后端以接受来自不同来源(或只是不同的端口号)的请求。

用户回答回答于

在Django项目根文件夹(位于Manage.py的位置)中,执行

pip install django-cors-headers

我试过使用Virtualenv,但是无法这样做,所以我安装了它,而没有切换到Virtualenv,并且安装了它。

安装它之后,您必须对Django set ings.py进行一些编辑。

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

MIDDLEWARE_CLASSES = (
    ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
)

CORS_ORIGIN_ALLOW_ALL = True   

以上设置为true允许接受所有来源。

参考资料:https://github.com/ottoyiu/django-cors-headers

扫码关注云+社区