django 取消csrf限制的实例

 更新时间:2020年03月13日 15:15:49   作者:毛宝宝  
这篇文章主要介绍了django 取消csrf限制的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

# 导入包

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值

解决方法

在中间件中引入

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限制的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • PowerBI和Python关于数据分析的对比

    PowerBI和Python关于数据分析的对比

    这篇文章主要介绍了PowerBI和Python关于数据分析的对比,很多经常会用到数据分析的伙伴会问有没有一款便捷好用的工具!肯定有啊,Python的出现和普及,很容易就能改变这些窘境,需要的朋友可以参考下
    2019-07-07
  • 对python中GUI,Label和Button的实例详解

    对python中GUI,Label和Button的实例详解

    今天小编就为大家分享一篇对python中GUI,Label和Button的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python 字典套字典或列表的示例

    python 字典套字典或列表的示例

    今天小编就为大家分享一篇python 字典套字典或列表的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • CentOS6.9 Python环境配置(python2.7、pip、virtualenv)

    CentOS6.9 Python环境配置(python2.7、pip、virtualenv)

    这篇文章主要介绍了CentOS6.9 Python环境配置(python2.7、pip、virtualenv)方法,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • Django项目实战之配置文件详解

    Django项目实战之配置文件详解

    这篇文章主要给大家介绍了关于Django项目实战之配置文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 浅谈python中的占位符

    浅谈python中的占位符

    这篇文章主要介绍了浅谈python中的占位符,分享了其简单实例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python实现自动识别并批量转换文本文件编码

    Python实现自动识别并批量转换文本文件编码

    这篇文章主要为大家详细介绍了如何利用Python实现自动识别并批量转换文本文件编码的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-03-03
  • 不可错过的十本Python好书

    不可错过的十本Python好书

    不可错过的十本Python好书,分别适合入门、进阶到精深三个不同阶段的人来阅读,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 使用Python的urllib和urllib2模块制作爬虫的实例教程

    使用Python的urllib和urllib2模块制作爬虫的实例教程

    这篇文章主要介绍了使用Python的urllib和urllib2模块制作爬虫的实例教程,展现了这两个常用爬虫制作模块的基本用法,极度推荐!需要的朋友可以参考下
    2016-01-01
  • 如何用python合并多个有规则命名的nc文件

    如何用python合并多个有规则命名的nc文件

    在地学领域,nc格式的文件可谓随处可见,这种文件可以存储多维数字矩阵,下面这篇文章主要给大家介绍了关于如何用python合并多个有规则命名的nc文件的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论