Was ist der Unterschied zwischen dem Erstellen von Cookies auf dem Server und auf dem Client? Werden diese als serverseitige Cookies und clientseitige Cookies bezeichnet? Gibt es eine Möglichkeit, Cookies zu erstellen, die nur auf dem Server oder auf dem Client gelesen werden können?
http
cookies
session-cookies
Rahul
quelle
quelle
Antworten:
HTTP COOKIES
Cookies sind Schlüssel / Wert-Paare, die von Websites zum Speichern von Statusinformationen im Browser verwendet werden. Angenommen, Sie haben eine Website (example.com). Wenn der Browser eine Webseite anfordert, kann die Website Cookies senden, um Informationen im Browser zu speichern.
Beispiel für eine Browseranforderung:
Beispielantwort vom Server:
Hier werden zwei Cookies foo = 10 und bar = 20 im Browser gespeichert. Der zweite läuft am 30. September aus. Bei jeder nachfolgenden Anfrage sendet der Browser die Cookies an den Server zurück.
SITZUNGEN: Serverseitige Cookies
Serverseitige Cookies werden als "Sitzungen" bezeichnet. In diesem Fall speichert die Website ein einzelnes Cookie im Browser, das eine eindeutige Sitzungskennung enthält. Statusinformationen (foo = 10 und bar = 20 oben) werden auf dem Server gespeichert und die Sitzungskennung wird verwendet, um die Anforderung mit den auf dem Server gespeicherten Daten abzugleichen.
Anwendungsbeispiele
Sie können sowohl Sitzungen als auch Cookies verwenden, um Folgendes zu speichern: Authentifizierungsdaten, Benutzereinstellungen, den Inhalt eines Diagramms auf einer E-Commerce-Website usw.
Vor-und Nachteile
Nachfolgend Vor- und Nachteile der Lösungen. Dies sind die ersten, die mir in den Sinn kommen, es gibt sicherlich andere.
Cookie-Vorteile:
Cookie Nachteile:
Sitzungsprofis:
Sitzungskompromisse:
quelle
secure
?Sie meinen wahrscheinlich den Unterschied zwischen nur HTTP-Cookies und deren Gegenstück?
Http Nur auf Cookies kann in clientseitigem JavaScript nicht zugegriffen (gelesen oder geschrieben) werden, nur auf der Serverseite. Wenn das Flag "Nur HTTP" nicht gesetzt ist oder das Cookie in (clientseitigem) JavaScript erstellt wird, kann das Cookie sowohl in (clientseitigem) JavaScript als auch auf der Serverseite gelesen und in dieses geschrieben werden.
quelle
Alle Cookies sind Client und Server
Es gibt keinen Unterschied. Ein reguläres Cookie kann serverseitig oder clientseitig gesetzt werden. Das "klassische" Cookie wird bei jeder Anfrage zurückgesendet. Ein vom Server gesetztes Cookie wird in einer Antwort an den Client gesendet. Der Server sendet das Cookie nur, wenn es explizit gesetzt oder geändert wurde, während der Client das Cookie bei jeder Anforderung sendet.
Aber im Grunde ist es der gleiche Keks.
Das Verhalten kann sich jedoch ändern
Ein Cookie ist im Grunde ein
name=value
Paar, aber nach dem Wert kann es sich um eine Reihe von durch Semikolon getrennten Attributen handeln , die sich auf das Verhalten des Cookies auswirken, wenn es vom Client (oder Server) so implementiert wird. Diese Attribute können sich auf die Lebensdauer, den Kontext und verschiedene Sicherheitseinstellungen beziehen.Nur HTTP (nicht nur Server)
Eines dieser Attribute kann von einem Server festgelegt werden, um anzuzeigen, dass es sich um ein reines HTTP-Cookie handelt. Dies bedeutet, dass das Cookie weiterhin hin und her gesendet wird, jedoch nicht in JavaScript verfügbar ist. Beachten Sie jedoch, dass der Cookie noch vorhanden ist! Es ist nur ein eingebauter Schutz im Browser, aber wenn jemand einen lächerlich alten Browser wie IE5 oder einen benutzerdefinierten Client verwenden würde, kann er den Cookie tatsächlich lesen!
Es scheint also "Server-Cookies" zu geben, aber tatsächlich nicht. Diese Cookies werden weiterhin an den Kunden gesendet. Auf dem Client kann nicht verhindert werden, dass ein Cookie an den Server gesendet wird.
Alternativen, um "Nur-Sein" zu erreichen
Wenn Sie einen Wert nur auf dem Server oder nur auf dem Client speichern möchten, benötigen Sie eine andere Art von Speicher, z. B. eine Datei oder Datenbank auf dem Server oder lokalen Speicher auf dem Client.
quelle
document.cookie="foo=bar"
von gefolgtfetch("/foobar", {credentials: 'include'} )
ist kein Cookie enthält gesendetfoo=bar
. Ich habe diesen Code gerade direkt auf dieser Site mit DevTools und der Konsole ausprobiert.Ja, Sie können Cookies erstellen, die nur auf der Serverseite gelesen werden können. Diese werden als "Nur HTTP" -Kokies bezeichnet, wie bereits in anderen Antworten erläutert
Nein, es gibt keine Möglichkeit (ich weiß), "Cookies" zu erstellen, die nur auf der Clientseite gelesen werden können. Cookies sollen die Client-Server-Kommunikation erleichtern.
ABER, wenn Sie etwas wie "Nur-Client-Cookies" möchten, gibt es eine einfache Antwort: Verwenden Sie "Lokaler Speicher".
Lokaler Speicher ist syntaktisch einfacher zu verwenden als Cookies. Eine gute einfache Zusammenfassung der Cookies im Vergleich zum lokalen Speicher finden Sie unter:
https://courses.cs.washington.edu/courses/cse154/12au/lectures/slides/lecture21-client-storage.shtml#slide8
Ein Punkt: Sie können in JavaScript erstellte Cookies verwenden, um GUI-bezogene Dinge zu speichern, die Sie nur auf der Clientseite benötigen. ABER das Cookie wird für JEDE gestellte Anfrage an den Server gesendet, es wird Teil der http-Anforderungsheader, wodurch die Anfrage mehr Daten enthält und somit langsamer zu senden ist.
Wenn Ihre Seite über 50 Ressourcen wie Bilder, CSS-Dateien und Skripte verfügt, wird das Cookie (normalerweise) bei jeder Anforderung gesendet. Mehr dazu unter Sendet jede Webanforderung die Browser-Cookies?
Der lokale Speicher hat diese datenübertragungsbedingten Nachteile nicht, er sendet keine Daten. Es ist großartig.
quelle