django解决跨域请求的问题
2018-12-26 00:02
956 查看
解决方案
1.安装django-cors-headers
pip install django-cors-headers
2.配置settings.py文件
INSTALLED_APPS = [ ... 'corsheaders', ... ] MIDDLEWARE_CLASSES = ( ... 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 注意顺序 ... ) #跨域增加忽略 CORS_ALLOW_CREDENTIALS = True CORS_ORIGIN_ALLOW_ALL = True CORS_ORIGIN_WHITELIST = ( '*' ) CORS_ALLOW_METHODS = ( 'DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'VIEW', ) CORS_ALLOW_HEADERS = ( 'XMLHttpRequest', 'X_FILENAME', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', 'Pragma', )
OK!问题解决!
其他解决方案
另外还从网上看到其他两种解决方案,但都不太合适。在此列出,供大家参考
1.使用JSONP
使用Ajax获取json数据时,存在跨域的限制。不过,在Web页面上调用js的script脚本文件时却不受跨域的影响,JSONP就是利用这个来实现跨域的传输。因此,我们需要将Ajax调用中的dataType从JSON改为JSONP(相应的API也需要支持JSONP)格式。
JSONP只能用于GET请求。
2.直接修改Django中的views.py文件
修改views.py中对应API的实现函数,允许其他域通过Ajax请求数据:
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Django跨域请求问题的解决方法示例
- django解决跨域请求的问题
- django解决跨域请求的问题
- django DRF前后分离解决跨域请求数据问题
- 请求跨域问题 解决办法之 - jsonp
- 解决jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)的问题
- 解决ajax跨域请求浏览器兼容问题
- 用反向代理nginx proxy_pass配置解决ie8 ajax请求被拦截问题 ie8用nginx代理实现跨域请求访问 nginx405正向代理request_uri
- 详解基于angular-cli配置代理解决跨域请求问题
- 解决jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)的问题
- 解决异步请求时跨域访问或同源策略的问题
- 解决Django中在.js文件中用ajax请求后端,找不到CSRF问题
- Nginx 解决WebApi跨域二次请求以及Vue单页面问题
- cors解决跨域请求的问题
- jsonp实现浏览器跨域请求 解决同源策略问题
- koa2解决跨域请求问题
- 解决tomcat服务器跨域请求问题
- ajax请求跨域问题-通过jsonp方式解决
- jsonp解决跨域请求问题
- Django解决跨域问题