Nur-Client-Cookies – Cookie, das niemals an den Server geht

Lesezeit: 4 Minuten

Ich möchte vom Benutzer angeklickte Daten in einem Cookie speichern, das niemals zum Server gehen muss. Es ist wie bei Sitzungen hinzugefügte Daten, die ich über Sitzungen hinweg beibehalten möchte, da die Daten dem Cookie immer wieder hinzugefügt werden, lange gespeichert werden und nur gelöscht werden, wenn der Benutzer den Browserverlauf entfernt. Das Cookie ist ein reines Client-Cookie und muss nie zum Server gehen, da ich die vom Benutzer generierten Daten nicht auf dem Server benötige, also möchte ich den zusätzlichen Aufwand loswerden, den das Cookie beim Hin- und Hersenden zwischendurch verursacht Browser und Server. Ist es möglich, dies zu erreichen?

  • Können Sie uns den Code für das zeigen, was Sie versucht haben?

    – Mark Schultheiss

    18. Juni 2012 um 12:17 Uhr


  • ‘localstorage’ wird ausgeschlossen, da ich ältere Browser aller wichtigen unterstützen muss. Mark – Ich habe alle Funktionen erreicht, außer “nur Cookie auf Client-Seite”. Ich erstelle das Cookie mit dem entsprechenden Name-Wert-Paar, dem Ablaufdatum und dem Pfad unter Verwendung des Codes, den ich auf Quirksmode gefunden habe. Ich kann das Cookie mit Javascript steuern. Nur dass ich den Teil “Nur Client-Cookie” nicht erreichen kann. Ich hoffe du hast meine Frage verstanden?

    – Siva Bathula

    18. Juni 2012 um 13:20 Uhr

  • Mark – Ich kann den Code bereitstellen, aber es ist der banale Codeblock, den jeder verwendet und von vielen Seiten vorgeschlagen hat, einschließlich Quirksmode. Ich muss nur das “Nur-Client-Cookie – eines, das den Server nie erreicht” erreichen.

    – Siva Bathula

    18. Juni 2012 um 13:23 Uhr

Benutzer-Avatar
Franz Deschler

Ich weiß, es ist ein bisschen spät für dich, aber diese Antwort ist für alle, die das gleiche Problem haben.

  1. Mit HTML5 können Sie verwenden Webspeicher.

  2. (Nur eine Idee! – nicht getestet!) Sie könnten ein Cookie definieren (über Javascript auf dem Client) und das “secure”-Attribut setzen. In diesem Fall wird das Cookie nur bei HTTPS-Verbindungen an den Server gesendet. Um sicherzustellen, dass das Cookie den Browser nie verlässt, öffnen Sie einfach niemals eine HTTPS-Verbindung 😉

BEARBEITEN

Jetzt haben wir 2022 und ich würde Lösung 2) nicht mehr empfehlen. Anstatt die einzustellen secure Flag auf dem Cookie, setzen Sie die path zu einem Pfad auf dem Server, der nie verwendet wird.

  • Ich hatte die gleiche Idee mit 2), aber es funktioniert nicht. Sie können von JS aus nicht auf sichere Cookies zugreifen (zumindest nicht in FF). 1) funktioniert super!

    – Lodovik

    25. Februar 2014 um 22:22 Uhr

  • Oh, richtig. Ich habe den js-Zugang vergessen. Ich habe versucht, eine Lösung auch für Browser zu finden, die den Webspeicher noch nicht unterstützen. Sie könnten versuchen, einen Cookie-Pfadwert auf einen Pfad zu setzen, der nicht existiert. Das Cookie sollte also niemals gesendet werden. (nicht getestet. Bitte versuchen Sie das Ergebnis zu beantworten)

    – Franz Deschler

    26. Februar 2014 um 9:41 Uhr


  • Verwende nicht path=/notExistingPath wenn Sie möchten, dass Ihr Cookie in IE- oder Edge-Browsern funktioniert

    – amanteaux

    29. November 2016 um 15:38 Uhr

  • @amanteaux Ich habe mir erlaubt, den zusätzlichen „Update“-Teil der Antwort zu entfernen, auf den Sie sich bezogen haben, da er in IE/Edge nicht funktioniert – falls die Leute denken, dass sich die 11 Upvotes auf diesen Teil der Antwort beziehen. Ich habe gerade den neuesten Chrome getestet und es funktioniert auch dort nicht. Ma Jerez hat eine weitere Antwort, die ausschließlich dem Ansatz gewidmet ist, sodass sie dort weiter diskutiert werden kann.

    – EoghanM

    2. Juni 2020 um 13:30 Uhr


Benutzer-Avatar
Dan Smith

Wenn die Browserkompatibilität ein Problem darstellt, können Sie ein wenig Javascript verwenden, um verschiedene Technologien zu umschließen. Ältere Versionen von IE unterstützen (supprise supprise) eine proprietäre Version von localstorage namens userData (ich glaube nicht, dass es genau dasselbe ist, aber sollte tun, was Sie brauchen).

Ein Wrapper-Skript wie https://github.com/andris9/jStorage oder https://github.com/marcuswestin/store.js sollte tun, was Sie tun müssen.

  • Vielen Dank @Bulk, ich werde es versuchen. Aber persönlich würde ich eine browserunabhängige Cookie-Lösung bevorzugen, in diesem Fall würden meine Fehlerfälle auf zwei reduziert werden – vom Browser erzwungene Größenbeschränkung für das Cookie und deaktivierte Cookies im Browser (die Benutzerdaten / der lokale Speicher können ebenfalls deaktiviert werden und schätze, dieser Fehlerfall kann ausgeschlossen werden).

    – Siva Bathula

    18. Juni 2012 um 19:18 Uhr

  • Ich kann es nicht mit Sicherheit sagen, da ich mir zu 99% sicher bin, dass es dafür keine “Cookie” -basierte Lösung gibt, aber Sie können ruhig weitersuchen 🙂

    – Dan Smith

    19. Juni 2012 um 8:57 Uhr

Ich bin mir zu 100% sicher, dass es keine Möglichkeit gibt, Cookies nur auf der Clientseite zu erzwingen, sie werden immer an den Server gesendet. Es ist jedoch möglich, das Gegenteil zu tun: nur serverseitige Cookies (nicht von Javascript lesbar) durch Setzen des HttpOnly-Flags auf Cookie.

Verwenden Sie einen unmöglichen Pfad, um das Cookie zu setzen:

document.cookie = "cookieName=...; expires=... ; path=/never_reached/ablkappmqlnahsuia";

1130470cookie-checkNur-Client-Cookies – Cookie, das niemals an den Server geht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy