django解决跨域请求的问题
2017-01-14 17:49
453 查看
django解决跨域请求的问题
解决方案
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解决跨域请求的问题
- Tomcat下 解决Ajax请求跨域的问题
- Tomcat下 解决Ajax请求跨域的问题
- 解决ajax跨域请求浏览器兼容问题
- JSONP跨域GET请求解决Ajax跨域访问问题
- ajax请求跨域问题-通过jsonp方式解决
- 几个问题(十一)-------ajax是否能跨域请求,解决的办法
- 可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题(跨域问题)、options请求报错
- 解决异步请求时跨域访问或同源策略的问题
- 夺命雷公狗jquery---62通过$.getJSON来解决Ajax跨域请求问题
- 如何解决 XMLHttpRequest 跨域请求的问题
- JAVA调用https, JS跨域请求,客户端解决JS跨域问题, SOP
- 解决webservice的跨域请求问题
- 前端使用Jquery的getJSON方法,后台使用PHP,解决IE和火狐Firefox中存在的跨域ajax请求问题。
- 通过jsonp解决ajax的跨域请求问题
- 解决Ajax跨域请求问题
- 跨域请求问题以及相关解决方法之JSONP