CSRF токен Dajaxice - PullRequest
       9

CSRF токен Dajaxice

0 голосов
/ 28 июня 2011

Я пробую этот пример .Всякий раз, когда я пытаюсь получить доступ к функции dajax, она выдает ошибку «no csrf или session cookie».Как я могу добавить токен CSRF в JavaScript.Я попытался добавить токен csrf в шаблон, но он не сработал.

Ответы [ 3 ]

2 голосов
/ 28 июня 2011

1) добавьте 'django.middleware.csrf.CsrfViewMiddleware' к вашим middleware_classes в settings.py

2) после тега в шаблоне используйте {% csrf_token%}

в принципе, вот и все

https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax здесь вы можете узнать о токенах javascript и ajax csrf

1 голос
/ 30 июня 2011
1 голос
/ 28 июня 2011

Из django doc :

  1. Добавьте промежуточное программное обеспечение 'django.middleware.csrf.CsrfViewMiddleware' в список классов промежуточного программного обеспечения, MIDDLEWARE_CLASSES.(Он должен предшествовать CsrfResponseMiddleware, если он используется, и перед любым промежуточным программным обеспечением представления, которое предполагает, что атаки CSRF были обработаны.) Кроме того, вы можете использовать декоратор django.views.decorators.csrf.csrf_protect для определенных представлений, которые вы хотите использовать.protect (см. ниже).

  2. В любом шаблоне, который использует форму POST, используйте тег csrf_token внутри элемента, если форма предназначена для внутреннего URL:

    {% csrf_token%}

Этого не следует делать для форм POST, предназначенных для внешних URL-адресов, так как это может привести к утечке токена CSRF, что приведет к уязвимости.

  1. В соответствующих функциях просмотра убедитесь, что используется процессор контекста 'django.core.context_processors.csrf'.Обычно это можно сделать одним из двух способов:

    3.1 Использовать RequestContext, который всегда использует 'django.core.context_processors.csrf' (независимо от того, какой параметр TEMPLATE_CONTEXT_PROCESSORS).Если вы используете общие представления или приложения для вклада, вы уже охвачены, поскольку эти приложения повсеместно используют RequestContext.

    3.2 Импортируйте вручную и используйте процессор для генерации токена CSRF и добавления его в контекст шаблона.

...