django - Django 中的 "No ' 访问控制允许来源 ' header is present on the requested resource"

标签 django

我是 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 允许接受所有来源。

引用文献:https://github.com/ottoyiu/django-cors-headers

关于django - Django 中的 "No ' 访问控制允许来源 ' header is present on the requested resource",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22476273/

相关文章:

Django 使用 Pillow 以不同格式保存图像

php 和 django 在同一个 lighttpd 服务器上

python - LiveServerTestCase 服务器看到不同的数据库进行测试

javascript - 使用 javascript 或 jquery chop 下拉菜单中的项目和选定的项目

jquery - CSRF验证失败。请求在 Django 表单中中止

python - Django:通过几个多值关系进行注释

javascript - 使用 Django 模板(列表和字典)将 Python 数据结构转换为 js 数据结构

python - 无法通过 `Model` 实例访问管理器

python - Django channel 'No application configured for scope type ' websocket''

用于移动应用程序的 django oauth2 rest 身份验证流程