2012-05-27 17 views
5

$ .cookie liest keine Cookies, die zuvor von der Serverantwort festgelegt wurden.

Ich kann Cookies lesen, die mit $ .cookie() gesetzt wurden.

Ich kann alle Domain-Cookies sehen, die mit Firefox Web Developer hinzugefügt wurden.
Auch die Server-Seite kann die Anfrage Cookies sehen, so dass der Browser sie definitiv hat.

Ich habe experimentiert mit Ablaufzeiten ohne Erfolg.

+0

Was ist, wenn Sie die Cookies gründlich vergleichen? Wenn sie sich anders verhalten, gibt es einen Unterschied – zerkms

Antwort

6

Das Problem ist, dass die Server-Seite, die Cookies mit dem Httponly sendet, wie hier beschrieben Einstellung: http://en.wikipedia.org/w/index.php?title=HTTP_cookie#HttpOnly_cookie

Plätzchen auf diese Weise gesendet nicht zugänglich sind durch document.cookie. Dies wird im Allgemeinen verwendet, um den Cookie-Wert vor möglichen XSS-Angriffen auf Ihrer Website zu schützen.

Edit: Sie haben nicht erwähnt, welche Technologie Sie auf der Serverseite verwenden, um die Cookies zu setzen. Falls Sie PHP verwenden, um diesen Link die Möglichkeiten der Httponly-Flag Listen gesetzt werden könnte:

https://www.owasp.org/index.php/HttpOnly#Using_PHP_to_set_HttpOnly

1

UPDATE: Ich war falsch in meiner ursprünglichen Antwort (siehe unten) ... Seiten weiter unten in der Der Pfadbaum kann Cookies der oberen Ebene lesen, sodass die Pfade nicht genau übereinstimmen müssen. Lassen Sie meine ursprüngliche Antwort für den Fall, dass jemand anders den gleichen Fehler macht. Mein Problem wurde dadurch verursacht, dass ich einen Cookie von Javascript gesetzt habe und dann versuchte, die Seite des Cookie-Servers zu ändern. Server targeted Cookie mit Pfad "/", also Cookie mit Pfad "/ mypages" wurde nicht geändert.

$ .cookie nur kann Cookies unter dem aktuellen Dokumentpfad lesen, so dass, wenn Ihre Seite> mysite.com/mypages/mypage.aspx, wird der Server den Pfad als „/“ gesetzt, wenn ein Cookie Einstellung, > aber $ .cookie versucht, vom Pfad "/ mypages" zu lesen und den Cookie nicht zu lesen. Ich bin gerade selbst auf dieses Problem gestoßen. Wenn Sie keine anderen Pfade haben, ist dies wahrscheinlich nicht Ihr Problem.