django-cors-middleware不起作用

时间:2016-12-26 10:59:36

标签: django django-cors-headers

我已经尝试了django-cors-middleware好几天了,但我无法弄清楚如何设置它。
谁能告诉我,我做错了什么? 以下是我正在使用的测试项目设置。

  • django-version:1.10.3
  • python-version:3.5.2
  • 项目名称:cors_test
  • 应用程序名称:appone
  • appone / urls.py

    @req
  • appone / views.py

    MySqlDataAdapter mda = new MySqlDataAdapter(comm);
    mda.Parameters.AddWithValue("@req",value_goes_here);
    
  • appone /模板/ appone /的test.html

    urlpatterns = [
        url(r'^$', views.test_cors, name='test_cors'),
    ]
    
  • settings.py

    def test_cors(request):
        return render(request, 'appone/test.html', {})
    



那就是它!这是每个设置,我通过

运行服务器
<html>
    <script type="text/javascript">

    var url = 'https://www.google.co.jp/?gfe_rd=cr&ei=BuxgWJ-_LIyL8QfIgYe4BQ';
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);

    xhr.onload = function() {
     var responseText = xhr.responseText;
     console.log(responseText);
    };

    xhr.onerror = function() {
      console.log('There was an error!');
    };

    xhr.send();
    </script>

</html>



以下是我在上面运行

所获得的
    来自控制台的
  • 错误,
  

(index):1 XMLHttpRequest无法加载   https://www.google.co.jp/?gfe_rd=cr&ei=BuxgWJ-_LIyL8QfIgYe4BQ。没有   &#39;访问控制允许来源&#39;标题出现在请求的上   资源。起源&#39; http://127.0.0.1:8000&#39;因此是不允许的   访问。
(索引):14出错了!

  • 请求标题

    INSTALLED_APPS = [
        'corsheaders',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'appone'
    ]
    
    
    MIDDLEWARE = [
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
    ]
    
    CORS_ORIGIN_ALLOW_ALL = True
    
  • 响应标头

    python manage.py runserver
    
  • 一般

    :authority:www.google.co.jp
    :method:GET
    :path:/?gfe_rd=cr&ei=BuxgWJ-_LIyL8QfIgYe4BQ
    :scheme:https
    accept:*/*
    accept-encoding:gzip, deflate, sdch, br
    accept-language:ja,en-US;q=0.8,en;q=0.6
    cache-control:no-cache
    origin:http://127.0.0.1:8000
    pragma:no-cache
    referer:http://127.0.0.1:8000/
    user-agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
    x-client-data:CJe2yQEIpbbJAQjEtskBCPucygEIqZ3KAQ==
    

1 个答案:

答案 0 :(得分:1)

django-cors-middleware应用允许您控制从不同域访问您的Django应用。它不允许您从Django应用程序控制对google.co.jp的访问。您无法控制google.co.jp返回的标头,因此您无法使用中间件来启用cors。

如果第三方未启用cors或jsonp,则无法使用javascript访问它。您必须在视图中获取内容。