django解决跨域请求的问题详解


Posted in Python onJanuary 20, 2019

解决方案

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
零基础写python爬虫之神器正则表达式
Nov 06 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
解决Python使用列表副本的问题
Dec 19 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
python实现图片横向和纵向拼接
Mar 05 Python
使用Python内置模块与函数进行不同进制的数的转换
Apr 26 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
python 切换root 执行命令的方法
Jan 19 #Python
在Python 不同级目录之间模块的调用方法
Jan 19 #Python
python导入模块交叉引用的方法
Jan 19 #Python
python添加模块搜索路径和包的导入方法
Jan 19 #Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 #Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 #Python
在pycharm 中添加运行参数的操作方法
Jan 19 #Python
You might like
农民C键的运用技巧
2020/03/04 星际争霸
PHP源代码数组统计count分析
2011/08/02 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
javascript读写XML实现广告轮换(兼容IE、FF)
2013/08/09 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python中itertools模块用法详解
2014/09/25 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
python动态进度条的实现代码
2019/07/03 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
英国著名药妆店:Superdrug
2021/02/13 全球购物
一套PHP的笔试题
2013/05/31 面试题
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
总经理任命书范本
2014/06/05 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
2014年加油站工作总结
2014/12/04 职场文书
西湖英语导游词
2015/02/06 职场文书
小学生表扬稿范文
2015/05/05 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
golang 生成对应的数据表struct定义操作
2021/04/28 Golang