2011-09-16 13 views
6

Ustawiłem CSRF zgodnie z opisem w Django docs (używając Django 1.3). Współpracuje z FF i Safari, ale na IE9 uzyskaćWeryfikacja CSRF nie powiodła się, ale tylko z IE9

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

w nagłówkach odpowiedzi zlecenia Ajax znajdę

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

to działa w IE9 podczas używania go w postaci normalnej (czyli bez Ajax zaangażowany).

Używam Django za Nginx/1.1.2.

Jakieś wskazówki, czego tu brakuje?

Odpowiedz

3

Jeśli formularz znajduje się wewnątrz elementu iframe, prawdopodobną przyczyną jest domyślna polityka IE w zakresie blokowania plików cookie podmiotów zewnętrznych. Można

Bilet Django #17157 proponuje dodanie do dokumentacji uwagi na ten temat.

2

Miałem ten sam problem, problem polegał na tym, że nie określiłem atrybutu formularza formularza. IE apparantly na to nie pozwala.

1

W bilecie Django #17157 (dzięki @akaihola za link) stwierdzono, że problem polega na tym, że Internet Explorer domyślnie blokuje pliki cookie innych firm. Możesz więc włączyć pliki cookie innych firm dla wszystkich witryn lub tylko dla swojej witryny w ustawieniach przeglądarki. Oto jak to zrobić w IE 7 (z this link):

  1. Kliknij menu "Narzędzia"
  2. "Opcje internetowe"
  3. Kliknij
  4. wybierz "Prywatność" kartę

Opcja 1: Aby włączyć pliki cookie innych firm dla wszystkich witryn

  1. Kliknij "Zaawansowane"
  2. Wybierz „Zastąp automatyczną obsługę plików cookie”
  3. Wybierz „Akceptuj” przycisk pod „Pliki cookie innych firm” i kliknij „OK”

LUB

Wariant 2: Aby włączyć pliki cookie innych firm tylko dla Feedjit.com

  1. Kliknij "Miejsca"
  2. Add "your-domeny.com "i kliknij przycisk«Zezwól»
  3. Kliknij przycisk«OK»
  4. Wybierz«Akceptuj»przycisk pod«Pliki cookie innych firm»i kliknij«OK»
Powiązane problemy