Проверка CSRF не удалась, но только с IE9 - PullRequest
6 голосов
/ 16 сентября 2011

Я настроил CSRF, как описано в Django документах (с использованием Django 1.3). Он работает с FF и Safari, но на IE9 я получаю

<div id="summary">
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>
</div>

В заголовках ответа на запрос Ajax я нахожу

Set-Cookie  csrftoken=8db3637951243ffb591e6b2d6998ed03; expires=Fri, 14-Sep-2012 08:01:52 GMT; Max-Age=31449600; Path=/

Он работает в IE9 при использовании его в нормальной форме (т.е. без участия Ajax).

Я использую Django за nginx / 1.1.2.

Любые намеки на то, что мне здесь не хватает?

Ответы [ 3 ]

3 голосов
/ 03 ноября 2011

Если ваша форма находится внутри iframe, вероятной причиной является политика IE по умолчанию блокирования сторонних файлов cookie. Вы могли бы

Билет Джанго # 17157 предлагает добавить примечание по этому вопросу в документацию.

2 голосов
/ 12 апреля 2013

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

1 голос
/ 24 февраля 2015

В билете Django # 17157 (спасибо @akaihola за ссылку) указано, что проблема в том, что Internet Explorer блокирует сторонние куки по умолчанию.Таким образом, вы можете включить сторонние куки для всех сайтов или только для вашего сайта в настройках браузера.Вот как это сделать в IE 7 (из по этой ссылке ):

  1. Нажмите меню «Сервис»
  2. Нажмите «Свойства обозревателя»
  3. Выберите вкладку «Конфиденциальность»

Вариант 1. Включение сторонних файлов cookie для всех сайтов

  1. Нажмите «Дополнительно»
  2. Выбрать«Переопределить автоматическую обработку файлов cookie»
  3. Нажмите кнопку «Принять» в разделе «Сторонние файлы cookie» и нажмите «ОК»

ИЛИ

Вариант 2: Комувключить сторонние куки только для Feedjit.com

  1. Нажмите «Сайты»
  2. Добавьте « your-domain.com » и нажмите «Разрешить»
  3. Нажмите «ОК»
  4. Выберите кнопку «Принять» в разделе «Сторонние файлы cookie» и нажмите «ОК»
...