Django csrf机制设置csrftoken

2019-08-16  本文已影响0人  NIGangJun

最近使用vue+django做一个项目

问题:

前端发get请求正常,发post请求的时候报错(403 Forbidden (CSRF token missing or incorrect.))

上度娘看了看,怎么都是注掉'django.middleware.csrf.CsrfViewMiddleware'?

解决

找了一圈没有找到自己想要的答案,回过头看看错误信息,意思好像是我缺少csrf token
那这个csrf token在哪里?再上度娘看看,理解一下答案

按照描述的答案,'X-CSRFToken'对应的csrftoken是需要在cookie里取的。由于这个cookie是服务器传过来的, 那么剩下的就简单了。

# 设置csrftoken的方式有好几种,我采用了装饰器的方法,方便简单。
from django.http import JsonResponse
from django.views.decorators.csrf import ensure_csrf_cookie

@ensure_csrf_cookie
def demo_data_post(request):
    return JsonResponse({"msg": "OK"})

前端调用这个view提供的接口,在cookie里就多了一个'csrftoken'的值。然后拿着这个再做post请求,就不会出现上面的问题。

最后总结理解一下这个方法的实现过程:

上一篇 下一篇

猜你喜欢

热点阅读