3
回答
no csrftoken in cookies
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

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

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

举报
于俊
发帖于6年前 3回/432阅
共有3个答案 最后回答: 6年前
 70 |---req.open("POST",preurl,true);
 71 |---req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
 72 |---req.setRequestHeader("X-CSRFToken",getCookie("csrftoken"));

--- 共有 1 条评论 ---
于俊这个我查过了。 我前面说了 cookie 被我清空了,之后无论怎么重启server,都没有在cookie中找到csrftoken这个cookie。 6年前 回复

找到解决方案了:

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',

--- 共有 1 条评论 ---
于俊设置了。 刚试了下,在template中调用view中传过来的{% csrf_token %}之后cookie中就生成了一个csrf_token。 :) 6年前 回复
顶部