Пижама + Джанго => CSRF путаница, 403 ошибки - PullRequest
3 голосов
/ 19 октября 2011

У меня есть пижамы и Django, работающие через Apache2 с mod_wsgi в Windows 7. Однако я не верю, что у меня возникают проблемы с настройками этих вещей: единственное, что не работает, - это попытка POST-информации изПижамные формы.Попытка использовать сгенерированные пижамой формы в моем приложении приводит к 403 (страница ошибки «Ошибка проверки CSRF»).

Я потратил часы на это и прочитал все ответы, которые я мог найти здесь, связанные с CSRF иПижаму, и сделал много внешних исследований только по CSRF и Django, Django и Ajax и т. Д. Если этот вопрос не доходит до тех, кто знает, что делать в этой ситуации, я думаю, что я сократил сутьвопрос.

Как получить {% csrf_token %} в сгенерированной пижамой форме?Кажется, что это может быть невозможно, потому что из того, что я понимаю, токены CSRF не являются постоянными, то есть страница, сгенерированная пижамой ... Моя страница пижам генерируется из файла пижамы .py, в результате чего получается папка, полная жесткихзакодированный материалКак получилось, что я интегрировал бы текущий токен CSRF в эту уже закодированную форму?

Пожалуйста, не стесняйтесь спрашивать более подробную информацию, по этой проблеме невероятно сложно разобраться.Ни одна из опубликованных сведений об интеграции Pyjamas & Django не относится к этому;и единственные найденные мной решения, которые, кажется, знают о CSRF в Django, говорят, что вам, вероятно, следует просто отключить защиту CSRF (которую я мог бы сделать, но какую защиту я мог бы вместо нее установить? Моя собственная система cookie)«Это ужасная идея, чтобы отключить защиту CSRF в любом случае?).

Спасибо!

1 Ответ

3 голосов
/ 19 октября 2011

Вам нужно будет написать немного JavaScript, чтобы получить токен CSRF из cookie-файла (часть HTTP-запроса), а затем добавить его в форму при отправке.

Посмотрите на этот ответ в качестве отправной точки: Проверка Django CSRF завершилась неудачно с запросом Ajax POST

Ключевым моментом здесь является то, что JavaScript может быть таким же постоянным, как ваши сгенерированные пижамой файлы, потому что они откладывают обработку токена до тех пор, пока форма не станетпредставленный.

...