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基础入门学习笔记(Python环境搭建)
Jan 13 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
Python函数返回不定数量的值方法
Jan 22 Python
python3获取当前目录的实现方法
Jul 29 Python
Django如何实现上传图片功能
Aug 16 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
python3.7调试的实例方法
Jul 21 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python将list元素转存为CSV文件的实现
Nov 16 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
JQuery开发的数独游戏代码
2010/10/29 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
js实现碰撞检测
2021/01/29 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
MySQL最常见的操作语句小结
2015/05/07 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
Python语言快速上手学习方法
2018/12/14 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Django的models中on_delete参数详解
2019/07/16 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
Python命令行click参数用法解析
2019/12/19 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
工程测量与监理专业应届生求职信
2013/11/27 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
教师校本培训方案
2014/02/26 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
百日安全活动总结
2014/05/04 职场文书
环保志愿者活动方案
2014/08/14 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server