2012-09-15 8 views
5

Ich logge mich in Django Admin. Wenn ich Firebug JS Konsole öffne und versuche, Cookies mit document.cookie zu drucken, bekomme ich nur csrftoken Cookie. Aber wenn ich Firefox Einstellungen öffne> Datenschutz> Cookie löschen ... dann kann ich sessionid Cookie sehen.Warum kann ich auf der Client-Seite nicht 'SessionID' bekommen?

Wie bekomme ich das auf der Client-Seite?

Antwort

9

Sie können nicht das Session-Cookie zugreifen, da sie standardmäßig auf Httponly gesetzt ist (Sie können es sehen, mit Firebug (Ressourcen-> die Plätzchen> Sitzungs-HTTP-Spalte markiert ist))

Kopieren mit dem 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. 

Sie können einstellen: SESSION_COOKIE_HTTPONLY = False in Ihrem settings.py wenn Sie wirklich wollen von Client-Seite Code den Zugriff darauf haben. Trotzdem ist es keine empfohlene Praxis.

+4

Nur eine Anmerkung, dass der Grund, warum es nicht empfohlen wird, ist, dass, wenn Ihre Site irgendwie anfällig für XSS ist, ein Angreifer dies verwenden könnte, um Session-IDs zu stehlen. Dies ist natürlich nicht möglich, wenn die Sitzungs-ID nicht dem JS-Land ausgesetzt ist. –

+0

Noch ein Hinweis aus der Dokumentation: "Es gibt nicht viel Entschuldigung, um dies zu vermeiden: Wenn Ihr Code davon abhängt, dass Sie Session-Cookies von JavaScript lesen, machen Sie wahrscheinlich einen Fehler." – cs01