Wie setze ich bei Cookies den Pfad in Java Script?


#1

Hallo,

Ich stelle mich wahrscheinlich zu blöde an.
Wie setze ich bei Cookies den Pfad?

document.cookie = “TT_COOKIE=” + wert+ ‘;path=/;’;

Das funktioniert.

Aber

document.cookie = “TT_COOKIE=” + wert+ ‘;path=/chocolate/;’;

funktioniert nicht. Es wird nichtmal “/” gesetzt. Sondern das Cookie gar nicht.

Chrome 65.0.3325.181
aufrufende Domain ist localhost. (Url: “http://localhost:1841”)

Komisch wirds auf dem richtigen Server: Hier wird die Anwendung mit “http://host:8080/TTApp” aufgerufen. Die Cookies, obwohl mit Pfad “/” gesetzt, haben den Pfad “/TTApp”.

Ich möchte gerne, dass sie den Pfad “/TTAppBackend” haben. Bzw. - das ist wichtig - bei jeden Aufruf an TTAppBackend mitgeschickt werden.

Danke Thomas


#2

Hilft dir das weiter?
http://openbook.rheinwerk-verlag.de/javascript_ajax/12_cookies_003.htm


#3

Nein. Leider nicht. Mein Problem ist, dass ich keine anderen Pfad setzen kann?

Und - besonders spassig - der Pfad der ans Cookie geklebt wird, anscheinend auch Port-abhängig ist.

bei https://10.33.177.230:8443/TTApp/

werden die Cookies mit dem Pfad “/” angelegt. Beim Aufruf mit:

https://10.33.177.230/TTApp/

über Proxy werden sie mit “/TTApp” angelegt.
Identischer Code!


#4

JQuery + Cookies hat mich zu dieser lib geführt:

Setzt wohl mittlerweile auch nicht mehr auf JQuery. Keine ahnung woran es bei dir scheitert, aber vielleicht hilft dir die lib ja.

Wenn du pech hast, dann haut dir irgendeine Sicherheitsfunktion dazwischen. Dafür kenne ich mich leider nicht gut genug mit dem Thema aus.


#5

Das ist leider mein Problem :wink:
Da gibts anscheinend irgendwelche Feinheiten …


#6

Glaub ich dir aufs Wort. Meine “hoffnung” liegt darin, dass es ein bekanntes Problem ist, welches mehrere Leute schon hatten und die Lib das für dich out-of-the-box löst.


#7

Ich kenne mich leider auch nicht wirklich aus, aber der / ist das Präfix für Root. Vllt hilft es ja, wenn du deine Pfade nicht mit / beginnen lässt, Wenn TTApp das Wurzelverzeichnis der Seite ist, virst du kaum höher als TTApp kommen, weswegen du die cookies nur in ein Verzeichnis darunter ablegen kannst.


#8

Ich antworte mir selbst mal. Vielleicht hat ja jemand ein ähnliches Problem.
Man muss einige Fälle unterscheiden.

  1. Man setzt keinen Pfad.
    Hier setzt der Broser den Pfad in der URL. Bei host:8080/MyApp auf “/MyApp”.
    Cookies werden nur bei host:8080/MyApp mitgeschickt. Nicht aber bei host:8080/MyAppBackend etc.

  2. Man setzt “/”
    Das geht immer. Der Pfad ist “/”. Cookies werden immer bei Aufruf von host:port mitgeschickt.

  3. Man setzt “/MyApp”
    Hier wird der Pfad auf “/MyApp” gesetzt.
    Bei entsprechenden Aufrufen wird das Cookie in den Request gepackt.

  4. Man setzt “/foo”
    Das darf man nicht! Das war der Knackpunkt. Man kann nur Pfade setzen die in der URL enthalten sind.
    Chrome setzt das Cookie gar nicht. In FF sieht man es. Das Cookie wird aber in keinen Fall mitgeschickt.

  5. Man setzt “foo”.
    Hier ist egal, was man setzt. Der Pfad muss mit “/” beginnen. Ansonsten ist es so wie nicht gesetzt. Also wie Fall 1.

Ob am Ende auch noch ein “/” ist, ist augenscheinlich (Chrome, FF) egal.