解决django前后端分离csrf验证的问题


Posted in Python onFebruary 03, 2019

第一种方式ensure_csrf_cookie

这种方方式使用ensure_csrf_cookie 装饰器实现,且前端页面由浏览器发送视图请求,在视图中使用render渲染模板,响应给前端,此时这个渲染模板的视图函数上要加上这个装饰器

这种方式保证了模板返回时,前端接收到的响应中有csrftoken这个cookie,方法见代码。

以上方法并没有严格意义的前后分离,如果模板中有form表单,可以直接在模板中添加{% csrf_token %}。

第二种方式

前后完全分离,前端页面直接通过获取静态文件得到,然后直接发送ajax请求,得到csrftoken,此时需要一个视图函数来返回token值

def get_token(request):
 token = django.middleware.csrf.get_token(request)
 return JsonResponse({'token': token})

如此即可在浏览器将token值保存在cookie中,然后通过第一种方式中取得cookie的方法获取cookie。

发送ajax请求

以上方式得到csrftoken后,需要将其添加到请求头中,方法见代码

function csrfSafeMethod(method) {
 // these HTTP methods do not require CSRF protection
 return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

// 给ajax请求设置请求头x-csrftoken
$.ajaxSetup({
 beforeSend: function (xhr, settings) {
  if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
   xhr.setRequestHeader("X-CSRFToken", csrftoken);
  }
 }
});

此时,csrf验证不再成为阻碍

以上这篇解决django前后端分离csrf验证的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过urllib2爬网页上种子下载示例
Feb 24 Python
python实现巡检系统(solaris)示例
Apr 02 Python
举例详解Python中yield生成器的用法
Aug 05 Python
python 把列表转化为字符串的方法
Oct 23 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 Python
关于Python中定制类的比较运算实例
Dec 19 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
Tensorflow累加的实现案例
Feb 05 Python
python多进程下的生产者和消费者模型
May 07 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 Python
详解如何用Python实现感知器算法
Jun 18 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 #Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 #Python
对python中字典keys,values,items的使用详解
Feb 03 #Python
python生成带有表格的图片实例
Feb 03 #Python
对python生成业务报表的实例详解
Feb 03 #Python
使用Python快速制作可视化报表的方法
Feb 03 #Python
python生成每日报表数据(Excel)并邮件发送的实例
Feb 03 #Python
You might like
php 计划任务 检测用户连接状态
2012/03/29 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
python实现获取Ip归属地等信息
2016/08/27 Python
flask-restful使用总结
2018/12/04 Python
浅析python参数的知识点
2018/12/10 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
Python缓存技术实现过程详解
2019/09/25 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
总经理助理职责
2014/02/04 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
5s推行计划书
2014/05/06 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
学习党章心得体会2016
2016/01/15 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python