csrf token dajaxice

时间:2011-06-28 11:18:02

标签: ajax django csrf

我正在尝试this example。每当我尝试访问dajax函数时,它都会出现“no csrf或session cookie”错误。如何在javascript中添加csrf令牌。我尝试在模板中添加csrf令牌但它不起作用。

3 个答案:

答案 0 :(得分:2)

1)将'django.middleware.csrf.CsrfViewMiddleware'添加到settings.py中的middleware_classes

2)在模板中的标记之后,使用{%csrf_token%}

基本上,就是它

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax在这里你可以找到关于javascript和ajax csrf标记的文件

答案 1 :(得分:1)

来自django doc

  1. 将中间件“django.middleware.csrf.CsrfViewMiddleware”添加到中间件类MIDDLEWARE_CLASSES列表中。 (它应该在CsrfResponseMiddleware之前,如果正在使用它,并且在任何假定已经处理了CSRF攻击的视图中间件之前。) 或者,您可以在要保护的特定视图上使用装饰器django.views.decorators.csrf.csrf_protect。(参见下文)。

  2. 在任何使用POST表单的模板中,如果表单用于内部URL,请在元素内使用csrf_token标记:

    {%csrf_token%}

  3. 对于以外部URL为目标的POST表单不应该这样做,因为这会导致CSRF令牌泄露,从而导致漏洞。

    1. 在相应的视图函数中,确保正在使用'django.core.context_processors.csrf'上下文处理器。通常,这可以通过以下两种方式之一完成:

      3.1使用RequestContext,它始终使用'django.core.context_processors.csrf'(无论您的TEMPLATE_CONTEXT_PROCESSORS设置如何)。如果您使用的是通用视图或contrib应用程序,则您已经被覆盖,因为这些应用程序始终使用RequestContext。

      3.2手动导入并使用处理器生成CSRF令牌并将其添加到模板上下文中。

答案 2 :(得分:1)