简单了解django处理跨域请求最佳解决方案


Posted in Python onMarch 25, 2020

一、什么是跨域请求

跨域:

简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。这显然是不安全的。为此,浏览器的鼻祖:网景(Netscape)公司提出了优秀的解决方案:著名的浏览器同源策略。现在所有支持JavaScript的浏览器都会使用这个策略。

同源:域名、协议、端口均相同的网站即为同源。

流程:

当一个浏览器的两个Tab页分别打开百度和谷歌页面时,百度发起一个脚本执行,此时浏览器会检查该脚本属于哪个页面。即检查是否同源。只有和百度同源的脚本才会被执行。若非同源,在请求数据时,浏览器会在控制台报一个异常。提示拒绝访问。

ps: 以上关于同源策略解释参考自百度百科-同源策略。

二、关于解决跨域请求

解决跨域请求从前端到后端有N种解决方式。我不在此一一列举。只分享一个目前看来对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',
)

通过以上配置,即可完美解决django跨域请求处理。唯一需要注意的就是cors-headers的中间件CorsMiddleware在注册时必须放在django-common中间件的前一个。

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

Python 相关文章推荐
python使用代理ip访问网站的实例
May 07 Python
浅谈Python爬虫基本套路
Mar 25 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Python列表操作方法详解
Feb 09 Python
Python基础类继承重写实现原理解析
Apr 03 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
python的flask框架难学吗
Jul 31 Python
Python 如何测试文件是否存在
Jul 31 Python
Python实现邮件发送的详细设置方法(遇到问题)
Jan 18 Python
Pytorch之扩充tensor的操作
Mar 04 Python
python3利用Axes3D库画3D模型图
Mar 25 #Python
PyCharm 2020 激活到 2100 年的教程
Mar 25 #Python
Django用数据库表反向生成models类知识点详解
Mar 25 #Python
Python动态强类型解释型语言原理解析
Mar 25 #Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 #Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 #Python
python实现梯度下降和逻辑回归
Mar 24 #Python
You might like
打造计数器DIY三步曲(上)
2006/10/09 PHP
用header 发送cookie的php代码
2007/03/16 PHP
php旋转图片90度的方法
2013/11/07 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
页面使用密码保护代码
2013/04/10 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
node.js调用C++函数的方法示例
2018/09/21 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
python读写二进制文件的方法
2015/05/09 Python
python统计字符的个数代码实例
2020/02/07 Python
Python PyQt5整理介绍
2020/04/01 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
八一慰问活动方案
2014/02/07 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
创业计划书之酒厂
2019/10/14 职场文书