Tei*_*ilo 11
如果页面上没有已使用{%csrf_token%}的表单,则不会发送cookie.因此,正如您所指出的,当您尝试在此类页面上使用Ajax时,您将收到错误消息.如果您的网站混合了各种表单和ajax帖子的组合,这将导致不稳定的行为.
这已经被报道并修复: https://code.djangoproject.com/ticket/15354
补丁中的解决方案,将推出1.3.1,是ensure_cookie_csrf装饰器.该装饰器在1.3或1.2.5中不存在
但是,无需等待.只需将此行添加到包含AJF帖子和CSRF表单的任何视图中:
request.META["CSRF_COOKIE_USED"] = True
Run Code Online (Sandbox Code Playgroud)
例:
def calculator(request):
request.META["CSRF_COOKIE_USED"] = True
return render_to_response('calc.html', {'form': CalcForm()})
Run Code Online (Sandbox Code Playgroud)
仅供参考 - 这正是装饰者所做的.
如果模板中使用了模板标签{% csrf_token %}来生成请求,或者get_token您request从django.middleware.csrf.
该get_token函数在对象上设置元信息request,进而告诉django.middleware.csrf.CsrfViewMiddleware中间件设置 cookie。
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |