django 取消csrf限制的实例


Posted in Python onMarch 13, 2020

# 导入包

from django.views.decorators.csrf import csrf_exempt

# 使用装饰器即可避免csrf限制

@csrf_exempt
def add_bookshelf(request):
  user_id = request.POST.get('user_id')
  print(user_id)
  return HttpResponse('123')

补充知识:Django 前后端分离跨域AJAX获取csrftoken及获取cookie时遇到的问题

获取CSRFTOKEN

Django的中间件'django.middleware.csrf.CsrfViewMiddleware'会将csrftoken的值设置在cookie中。在前后端不分离的项目中,若需要在AJAX使用csrftoken的值则可在js脚本中通过document.cookie直接获取cookie的值(也可以通过其他更快捷的轮子如js-cookie)。

在前后端分离的项目中(已配置django-cors-headers),无法直接使用js从cookie中获取csrfToken的值(浏览器的同源策略),即使已经成功设置了csrfToken的cookie值

django 取消csrf限制的实例

解决方法

在中间件中引入

corsheaders.middleware.CorsPostCsrfMiddleware

'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'corsheaders.middleware.CorsPostCsrfMiddleware',

有些博客中使用该中间件替代django.middleware.csrf.CsrfViewMiddleware是不可行的,因为该中间件并没有期望中csrf校验的功能,下面为该中间件的源代码。

class CorsPostCsrfMiddleware(MiddlewareMixin):

  def _https_referer_replace_reverse(self, request):
    """
    Put the HTTP_REFERER back to its original value and delete the
    temporary storage
    """
    if conf.CORS_REPLACE_HTTPS_REFERER and 'ORIGINAL_HTTP_REFERER' in request.META:
      http_referer = request.META['ORIGINAL_HTTP_REFERER']
      request.META['HTTP_REFERER'] = http_referer
      del request.META['ORIGINAL_HTTP_REFERER']

  def process_request(self, request):
    self._https_referer_replace_reverse(request)
    return None

  def process_view(self, request, callback, callback_args, callback_kwargs):
    self._https_referer_replace_reverse(request)
    return None

以上这篇django 取消csrf限制的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
详解字典树Trie结构及其Python代码实现
Jun 03 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
Python之str操作方法(详解)
Jun 19 Python
基于Python的关键字监控及告警
Jul 06 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
Django结合ajax进行页面实时更新的例子
Aug 12 Python
mac使用python识别图形验证码功能
Jan 10 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
Python经常使用的一些内置函数
Apr 11 Python
django-csrf使用和禁用方式
Mar 13 #Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 #Python
python爬虫实现获取下一页代码
Mar 13 #Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 #Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 #Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 #Python
详解用Python进行时间序列预测的7种方法
Mar 13 #Python
You might like
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python爬取三国演义的实现方法
2016/09/12 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
介绍一下木马病毒的种类
2015/07/26 面试题
航空大学应届生求职信
2013/11/10 职场文书
大学生活学习的自我评价
2013/12/03 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
工艺员岗位职责
2014/02/11 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
实习生矿工检讨书
2014/10/13 职场文书
导游欢送词
2015/01/31 职场文书
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL