Сбой django csrf на рабочем сервере - PullRequest
2 голосов
/ 17 июня 2011

Я работал на своем сервере разработки без проблем, когда я попробовал его на своем рабочем сервере, под настоящим именем, а не localhost или ip, я получил:

    Forbidden (403)

CSRF verification failed. Request aborted.
Help

Reason given for failure:

    CSRF cookie not set.

Я отправляю свой пост через jquery, использовал исправление javascript для метода post и все ...

Не знаю, что еще делать ... кто-нибудь может мне помочь?

Большое спасибо!

1 Ответ

1 голос
/ 17 июня 2011

То, что cookie не установлен, обычно означает, что вы не добавили промежуточное программное обеспечение csrf . Добавьте это в соответствующий модуль настроек для вашего рабочего развертывания. Вам также необходимо убедиться, что получаемый вид работает при использовании через JavaScript.

У вас есть два варианта. Либо пометьте представление на сервере как csrf_exempt, либо вам необходимо включить токен csrf в свой запрос. Токен csrf доступен для любого шаблона как {% csrf_token %}. Я бы сделал последнее.

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

<script type="text/javascript">
    var csrf_token = '{% csrf_token %}';
</script>

И где бы вы ни делали запрос, просто добавьте "csrf_token": csrf_token, к данным поста.

...