关于django的csrftoken检验

关于django的csrftoken检验

CSRF介绍

https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/index.html

项目中的csrf坑

用django自带的用户系统登录后会在cookie生成一个sessionid保持用户登录状态,同时生成一个csrftoken防止csrf攻击
由于有这个csrftoken的机制,前端登录后,想调用后端api或者通过sessionid认证用户信息时,有时候就会报错
CSRF Token missing or incorrect

解决办法

前端发送请求时在request添加头部
X-CSRFToken,值为cookie中的csrftoken
若后端csrftoken跳异常,可尝试

1
2
from django.template.context_processors import csrf
csrf(request)

网上也有说法可以用

1
@csrf_exempt

修饰报错的函数,忽略csrf
或者在settings.py中注释掉
‘django.middleware.csrf.CsrfViewMiddleware’,