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 相关文章推荐
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
Python 自动化表单提交实例代码
Jun 08 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
Django实现单用户登录的方法示例
Mar 28 Python
Python列表与元组的异同详解
Jul 02 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
python统计文章中单词出现次数实例
Feb 27 Python
如何使用python记录室友的抖音在线时间
Jun 29 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
python mongo 向数据中的数组类型新增数据操作
Dec 05 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
一个简单的jQuery插件制作 学习过程及实例
2010/04/25 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
2017/12/12 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
Python装饰器用法示例小结
2018/02/11 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
android面试问题与答案
2016/12/27 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
拓展培训心得体会
2014/01/04 职场文书
《落花生》教学反思
2014/02/25 职场文书
小学校本培训方案
2014/06/06 职场文书
励志演讲稿200字
2014/08/21 职场文书
先进基层党组织材料
2014/12/25 职场文书
婚礼答谢礼品
2015/01/20 职场文书
个人思想政治总结
2015/03/05 职场文书
python 镜像环境搭建总结
2022/09/23 Python