2011-06-28 180 views
0

我正在嘗試this example。每當我嘗試訪問dajax函數時,它會給出「無csrf或會話cookie」錯誤。如何在javascript中添加csrf標記。我試着在模板中添加csrf標記,但它不起作用。csrf令牌dajaxice

回答

1

django doc

  1. 將中間件'django.middleware.csrf.CsrfViewMiddleware'添加到中間件類MIDDLEWARE_CLASSES的列表中。 (如果正在使用CsrfResponseMiddleware,並且在任何視圖中間件假設已經處理了CSRF攻擊之前,它應該會出現在之前。) 或者,您可以使用裝飾器django.views.decorators.csrf.csrf_protect關於您想要的特定視圖保護(見下文)。

  2. 在使用一個POST形式,使用csrf_token標籤的元素內,如果表單是用於內部URL任何模板:

    {%csrf_token%}

,這不應成爲爲針對外部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令牌並將其添加到模板上下文中。