2012-09-15 15 views
5

Accedo all'amministratore di django. Quando apro la console firebug e provo a stampare i cookie con document.cookie ottengo solo cookie csrftoken. Ma quando apro le preferenze di Firefox> Privacy> Elimina cookie ... poi posso vedere il cookie sessionid.Perché non riesco ad ottenere "sessionid" sul lato client?

Come ottenerlo dal lato client?

risposta

9

Non si può accedere il cookie di sessione, perché è di default impostato su HTTPOnly (si può vedere usando Firebug (risorse-> Cookies-> Colonna HTTP di sessionid è selezionata))

Copia dal docs:.

SESSION_COOKIE_HTTPONLY 
Default: True 

Whether to use HTTPOnly flag on the session cookie. 
If this is set to True, client-side JavaScript will not to 
be able to access the session cookie. 

è possibile impostare: SESSION_COOKIE_HTTPONLY = False nella vostra settings.py se si vuole veramente avere accesso ad esso dal codice lato client. Tuttavia non è una pratica raccomandata.

+4

Solo una nota che il motivo per cui non è consigliabile fare pratica è che se il tuo sito è in qualche modo suscettibile all'XSS, allora un utente malintenzionato potrebbe usarlo per rubare gli ID di sessione. Questo ovviamente non è possibile se l'ID di sessione non è esposto a JS land. –

+0

Un'altra nota dai documenti: "Non ci sono molte scuse per non lasciare questo: o se il tuo codice dipende dalla lettura dei cookie di sessione da JavaScript, probabilmente stai sbagliando." – cs01

Problemi correlati