django解决跨域请求的问题详解
2019-03-28 10:57
603 查看
解决方案
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- java 请求跨域问题解决方法实例详解
- Django跨域请求问题的解决方法示例
- django解决跨域请求的问题
- django解决跨域请求的问题
- 详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
- django解决跨域请求的问题
- 详解基于angular-cli配置代理解决跨域请求问题
- 详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
- django DRF前后分离解决跨域请求数据问题
- JAVA调用https, JS跨域请求,客户端解决JS跨域问题, SOP
- 解决Django中在.js文件中用ajax请求后端,找不到CSRF问题
- Tomcat下 解决Ajax请求跨域的问题
- AngularJs解决跨域问题案例详解(简单方法)
- jquery及原生javascript对jsonp解决跨域问题实例详解
- ajax请求总是不成功?浏览器的同源策略和跨域问题详解
- Nginx解决ajax跨域请求问题
- 解决IE9 IE8的跨域 请求问题
- PHP解决mui前端框架中的ajax请求跨域问题
- 解决Ajax请求跨域问题