csrf中间件
csrf 跨站请求伪造
补充两个装饰器:
from django.views.decorators.csrf import csrf_exempt,csrf_protect
csrf_exempt 给视图加上装饰器后,当前的视图不需要CSRF校验
csrf_protect 给视图加上装饰器后,当前的视图需要CSRF校验
process_request:
从cookie中获取csrftoken的值 —— 》 request.META['CSRF_COOKIE']
process_view
视图函数加上csrf_exempt装饰器,不进行CSRF校验
- 请求方式 是'GET', 'HEAD', 'OPTIONS', 'TRACE' 也不进行校验
csrf_token = request.META.get('CSRF_COOKIE') # cookie中获取csrftoken的值
# 获取提交的csrfmiddlewaretoken的值request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')如果或许不到csrfmiddlewaretoken的值再尝试从请求头中获取X_CSRFTOKEN的值 —— 》request_csrf_token
- request_csrf_token 和 csrf_token 进行比较
- 能比较成功 通过校验
- 不能比较成功 拒绝