Python的Django应用程序解决AJAX跨域访问问题的方法
引子 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/> <title>test</title> </head> <body> <button onclick="showPersonInfo()">点我获取数据</button> </body> <script src="/uploads/201701/10/14840338191.js"></script> <script> function showPersonInfo(){ $.getJSON( 'http://xxx/account/getuserinfo/',{username: "abc"},function(json) { var html='<br>'+'用户名:'+json.username+'<br>'+'姓:'+json.first_name+'<br>'+'名:'+json.last_name+'<br>'+'邮箱'+json.email; document.write(html); } ) } </script> </html> 但是,Chrome浏览器提示错误: No 'Access-Control-Allow-Origin' header is present on the requested resource. 经过一番Google发现这个问题是――CORS导致的。 什么是CORS?
以上过程就发生了跨域访问。如果直接使用Ajax来请求就会失败,就像Chrome提示的: No 'Access-Control-Allow-Origin' header is present on the requested resource. 如何解决Ajax跨域访问问题? 2.直接修改Django中的views.py文件 def myview(_request): response = HttpResponse(json.dumps({"key": "value","key2": "value"})) response["Access-Control-Allow-Origin"] = "*" response["Access-Control-Allow-Methods"] = "POST,GET,OPTIONS" response["Access-Control-Max-Age"] = "1000" response["Access-Control-Allow-Headers"] = "*" return response 3.安装django-cors-headers pip install django-cors-headers 在settings.py中增加: INSTALLED_APPS = ( ... 'corsheaders',... ) ... MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware',... ) 可以配置允许跨域访问的白名单或者直接设置为允许所有的跨域访问,具体的配置可以看看他们的github页说明。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |