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采用django框架实现支付宝即时到帐接口
May 17 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
用pycharm开发django项目示例代码
Jun 13 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
Django migrate报错的解决方案
May 20 Python
python中的sys模块和os模块
Mar 20 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 常用字符串函数总结
2008/03/15 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
django fernet fields字段加密实践详解
2019/08/12 Python
python中class的定义及使用教程
2019/09/18 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
农民工讨薪标语
2014/06/26 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
mysql知识点整理
2021/04/05 MySQL
python字符串的多行输出的实例详解
2021/06/08 Python
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
Android 中的类文件和类加载器详情
2022/06/05 Java/Android
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技