解决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 相关文章推荐
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
python3大文件解压和基本操作
Dec 15 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Python 支付整合开发包的实现
Jan 23 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
通过cmd进入python的实例操作
Jun 26 Python
python 命令行传入参数实现解析
Aug 30 Python
python matplotlib折线图样式实现过程
Nov 04 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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
数字转英文
2006/12/06 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
对python的输出和输出格式详解
2018/12/08 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
python面试题之列表声明实例分析
2019/07/08 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
django foreignkey(外键)的实现
2019/07/29 Python
Django发送邮件功能实例详解
2019/09/02 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
《记承天寺夜游》教学反思
2014/02/16 职场文书
幼儿园评语大全
2014/04/17 职场文书
语文课外活动总结
2014/08/27 职场文书
改革共识倡议书
2014/08/29 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
新郎答谢词
2015/01/04 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
2019请假条的基本格式及范文!
2019/07/05 职场文书