2011-09-16 23 views
6

Ho impostato CSRF come descritto nello Django docs (utilizzando Django 1.3). Funziona con FF e Safari, ma su IE9 ottengoVerifica CSRF non riuscita, ma solo con IE9

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

nelle intestazioni di risposta dalla richiesta Ajax trovo

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

Funziona in IE9 quando viene utilizzato in una forma normale (cioè non Ajax coinvolto).

Sto utilizzando Django dietro nginx/1.1.2.

Qualche suggerimento quello che mi manca qui?

risposta

3

Se il modulo è all'interno di un iframe, il motivo probabile è la politica predefinita di IE di bloccare i cookie di terze parti. Si potrebbe

Il ticket di Django #17157 propone di aggiungere una nota su questo problema nella documentazione.

2

Ho avuto lo stesso problema, il problema per me era che non ho specificato l'attributo action form. A quanto pare, IE non lo consente.

1

Nel ticket di Django #17157 (grazie a @akaihola per il collegamento) si afferma che il problema è che Internet Explorer blocca i cookie di terze parti per impostazione predefinita. Quindi puoi abilitare i cookie di terze parti per tutti i siti o solo per il tuo sito nelle impostazioni del browser. Ecco come fare in IE 7 (da this link):

  1. fare clic sul menu
  2. "Opzioni Internet"
  3. Clicca
  4. selezionare la scheda "Privacy"

"Strumenti" opzione 1: per abilitare i cookie di terze parti per tutti i siti

  1. Fare clic su "Advanced"
  2. Selezionare "Sostituisci gestione automatica cookie"
  3. Selezionare il pulsante "Accetto" sotto "Cookie di terze parti" e fare clic su "OK"

O

Opzione 2: Per attivare i cookie di terze parti solo per Feedjit.com

  1. Fare clic su "Siti"
  2. Add "tuo-dominio.com "e fare clic su 'Consenti'
  3. Fare clic su 'OK'
  4. Selezionare il tasto '' sotto 'Cookie di terze parti Accetto' e fare clic su 'OK'
Problemi correlati