简单了解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实现的ini文件操作类分享
Nov 20 Python
在Python中处理时间之clock()方法的使用
May 22 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
python的dataframe和matrix的互换方法
Apr 11 Python
在windows下Python打印彩色字体的方法
May 15 Python
python实现自动登录
Sep 17 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
Python with用法:自动关闭文件进程
Jul 10 Python
Python3 读取Word文件方式
Feb 13 Python
python 线性回归分析模型检验标准--拟合优度详解
Feb 24 Python
python opencv 实现读取、显示、写入图像的方法
Jun 08 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代码
2010/08/08 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
PHP7常量数组用法分析
2016/09/26 PHP
使用vs code编辑调试php配置的方法
2019/01/29 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
firefox下input type="file"的size是多大
2011/10/24 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
Vue加载组件、动态加载组件的几种方式
2018/08/31 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
在Django的上下文中设置变量的方法
2015/07/20 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
django 消息框架 message使用详解
2019/07/22 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
党支部书记先进事迹
2014/01/17 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书