开发者社区> 问答> 正文

no csrftoken in cookies? 400 报错

no csrftoken in cookies? 400 报错

django 1.2之后就增加了csrftoken验证机制,post类型的请求都需要在request header中加入csrftoken,这个值可以从cookie中取到,但是我昨天clear了所有的cookie,但是之后这个token始终无法再次生成,所以ajax请求都不能成功。

请问,有谁遇到过这个情况,怎么解决?

展开
收起
爱吃鱼的程序员 2020-05-30 22:20:34 439 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
     70 |---req.open("POST",preurl,true);
     71 |---req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
     72 |---req.setRequestHeader("X-CSRFToken",getCookie("csrftoken"));

    ######这个我查过了。 我前面说了 cookie 被我清空了,之后无论怎么重启server,都没有在cookie中找到csrftoken这个cookie。######

    找到解决方案了:

    from django.core.context_processors import csrf from django.shortcuts import render_to_response def my_view(request):     c = {}     c.update(csrf(request))     # ... view code here     return render_to_response("a_template.html", c) 

    然后在页面中使用{% csrf_token %}获得这个值。

    但是我查看了django的源码,对于它什么时候将这个token写入cookie的那段还是不太清除,有知道的请解释下,谢谢!

    ######
    settings.py

    151 MIDDLEWARE_CLASSES = (
    156 |---'django.middleware.csrf.CsrfViewMiddleware',

    ######设置了。 刚试了下,在template中调用view中传过来的{% csrf_token %}之后cookie中就生成了一个csrf_token。 :)
    2020-05-30 22:20:35
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载