Django CSRF для HTTP и HTTPS - PullRequest
       53

Django CSRF для HTTP и HTTPS

3 голосов
/ 06 августа 2011

У меня есть блог, который работает как по HTTP, так и по HTTPS, и у меня возникают проблемы с проверкой токена csrf.

Токен CSRF доступен в каждой форме в порядке, но когда я включенHTTP-версия сайта и попытка комментировать я получаю следующую ошибку.

Запрещена (403) проверка CSRF.Запрос отменен.

Ошибка проверки реферира - http://mysite.com/blog/1/ не соответствует https://mysite.com/.

Работает нормально при просмотре блога по HTTPS.

Кто-нибудь знает, как сделать так, чтобы проверка соответствовала обоим?

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Я понял это. Это была проблема с моими параметрами fastcgi

fastcgi_param HTTPS включен;

установка переменной окружения, для которой требуется HTTPS. Django делает некоторые дополнительные принудительные действия для токенов csrf, когда эта переменная включена.

1 голос
/ 06 августа 2011

Возможно, вы захотите проверить свои настройки, чтобы убедиться, что для параметра CSRF_COOKIE_SECURE установлено значение True

Это помечает cookie как безопасный и не позволяет браузеру принимать его через незащищенное соединение, то есть HTTP.

Чтобы проверить, является ли, таким образом, источником проблемы, вы можете использовать любое работающее представление и добавить Assert False, чтобы получить экран отладки и посмотреть, отправлен ли файл cookie Csrf или нет.

...