当前位置: 首页 > 面试题库 >

Django-cors-headers不起作用

艾凌龙
2023-03-14
问题内容

我的Django版本是1.8.6。我已将corsheaders文件夹复制到项目文件夹中。我已经点安装django-cors-headers(ver
1.1.0)。这是我的setting.py:

    INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'MyWebsite_app',
    'storages',
    'rest_framework',
    'corsheaders',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

CORS_ORIGIN_ALLOW_ALL = True

这是我的jQuery:

function getLeague() {
$.ajax({
    url: 'http://otherdomain.ashx?username=xxx&password=xxx&sportsBook=xxx&sportsType=xxx&gameType=xxx',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        alert('Success');
    },
    error: function(data) {
        alert('Fail');
    }
    });
}

在执行getLeague()时,它会不断提醒“失败”。当我看到控制台时,它显示“
XMLHttpRequest无法加载http://otherdomain.ashx?username = xxx&password =
xxx&sportsBook = xxx&sportsType = xxx&gameType =
xxx。所请求的源上没有Access-
Control-Allow-Origin标头”。我应该在urls.py或view.py中添加一些代码吗?谢谢。


问题答案:

最好在您的应用程序中创建一个代理,该代理将依次调用另一个域并返回数据:

function getLeague() {
  $.ajax({
    url: '/crossdomainData',
    type: 'GET',
    dataType: 'json',
    success: function(data) {
        alert('Success');
    },
    error: function(data) {
        alert('Fail');
    }
    });
}

使用django时,可以导入 Django HTTP Proxy

介绍

Django HTTP代理为Django Web开发框架提供了简单的HTTP代理功能。
它允许您通过运行Django应用程序的主服务器向外部服务器发出请求。
此外,它还允许您记录对这些请求的响应并随时回放。

import urllib2
    def crossdomainData(request):
        url = "http://otherdomain.ashx?username=xxx&password=xxx&sportsBook=xxx&sportsType=xxx&gameType=xxx"
        req = urllib2.Request(url)
        response = urllib2.urlopen(req)
        return HttpResponse(response.read(), content_type="application/json")


 类似资料:
  • 我在django中使用spotify API/spotipy,需要用户登录到他们的帐户才能访问他们的数据。我使用了“pip3 install django-cors-Headers”并将适当的部分添加到settings.py. 即使这样,我仍然收到有关缺少访问控制允许源标头的错误,并且spotify登录页面无法打开。 jquery.min.js:2 XHR完成加载:GET"http://local

  • 我已经有效地使用 wiremock 一段时间了,我想启用 CORS 对模拟 API 的访问。 我尝试在响应标头中设置访问控制允许来源:* 和其他标头,但都无济于事。 这是我的一个映射示例: 我到底做错了什么导致CORS无法工作? 提前谢谢。

  • 这里使用Ajax:

  • 本文向大家介绍DRF跨域后端解决之django-cors-headers的使用,包括了DRF跨域后端解决之django-cors-headers的使用的使用技巧和注意事项,需要的朋友参考一下 在使用django-rest-framework开发项目的时候我们总是避免不了跨域的问题,因为现在大多数的项目都是前后端分离,前后端项目部署在不同的web服务器上,因为我们是后端程序员,因此我要通过后端的程序

  • 问题内容: 这来自django的文档: 领域独特 如果为True,则此字段在整个表中必须是唯一的。 这是在数据库级别并通过模型验证强制执行的。如果尝试在唯一字段中保存具有重复值的模型,则模型的save()方法将引发django .db.IntegrityError。 这是我的models.py 这是我的manage.py sqlall(我运行了syncdb) 但是,在manage.py shell

  • 所以,基本上,前端使用reactJS,后端Spring Boot(微服务,zuul充当网关),当然,如果没有CORS的东西,他们什么也做不了。 我们使用了这段代码 它起作用了,但不再起作用了。我正在使用Postman检查发送回来的标头,但这些都不在那里。 我该怎么办?我可以在每个微服务中使用一个简单的CORS过滤器,但让Zuul处理这一切会容易得多。因为无论如何所有请求都会通过它。 有什么建议吗?