简单了解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备份文件以及mysql数据库的脚本代码
Jun 10 Python
python正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
Apr 11 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python单元测试简单示例
Jul 03 Python
Django安装配置mysql的方法步骤
Oct 15 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 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
php实现ping
2006/10/09 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
JS 对象介绍
2010/01/20 Javascript
JQUERY操作JSON实例代码
2010/02/09 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
javascript中window.event事件用法详解
2012/12/11 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python基于DES算法加密解密实例
2015/06/03 Python
Python实现堆排序的方法详解
2016/05/03 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
市场营销专业推荐信
2013/11/03 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
员工加薪申请报告
2015/05/15 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书