Eine gängige Methode zur Überprüfung der Cookie-Unterstützung ist eine Weiterleitung.
Es ist eine gute Idee, dies nur zu tun, wenn der Benutzer versucht, etwas zu tun, das eine Sitzung initiiert, z. B. sich anmeldet oder etwas in seinen Warenkorb legt. Je nachdem, wie Sie damit umgehen, blockieren Sie möglicherweise den Zugriff auf Ihre gesamte Website für Benutzer - oder Bots -, die keine Cookies unterstützen.
Zuerst überprüft der Server die Anmeldedaten wie üblich - wenn die Anmeldedaten falsch sind, erhält der Benutzer diese Rückmeldung wie gewohnt.Wenn es richtig ist, dann antwortet der Server sofort mit einem Cookie und einer Weiterleitung zu einer Seite, die darauf ausgerichtet ist, nach diesem Cookie zu suchen - der nur die gleiche URL sein kann, aber mit einem Flag, das der Abfragezeichenfolge hinzugefügt wird. Wenn diese zweite Seite den Cookie nicht empfängt, erhält der Benutzer eine Nachricht, dass er sich nicht anmelden kann, da Cookies in seinem Browser deaktiviert sind.
Wenn Sie das Post-Redirect-Get-Muster für Ihr Anmeldeformular bereits befolgen, fügt diese Einstellung und Prüfung des Cookies keine zusätzlichen Anforderungen hinzu - der Cookie kann während der bestehenden Weiterleitung gesetzt und von geprüft werden das Ziel, das nach der Weiterleitung geladen wird.
Jetzt für, warum ich nur einen Cookie-Test nach einer Benutzer initiierten Aktion anders als auf jeder Seite laden. Ich habe gesehen, Websites implementieren einen Cookie-Test auf jeder einzelnen Seite, nicht zu erkennen, dass dies Auswirkungen auf Dinge wie Suchmaschinen Crawlen der Website haben wird. Das heißt, wenn ein Benutzer Cookies aktiviert hat, wird der Test-Cookie einmal gesetzt, so dass er nur eine Weiterleitung auf der ersten Seite ertragen muss, die er anfordert, und von da an gibt es keine Weiterleitungen mehr. Für jeden Browser oder anderen Benutzeragenten, wie eine Suchmaschine, die keine Cookies zurückgibt, kann jedoch jede einzelne Seite einfach zu einer Umleitung führen.
Eine weitere Methode, um auf Cookie-Unterstützung zu prüfen, ist Javascript - so wird keine Umleitung benötigt - Sie können ein Cookie schreiben und es virtuell sofort lesen, um zu sehen, ob es gespeichert und dann abgerufen wurde. Der Nachteil ist, dass es im Skript auf der Client-Seite läuft - dh wenn Sie immer noch die Nachricht darüber, ob Cookies unterstützt werden, um zurück zum Server zu bekommen, dann müssen Sie noch organisieren - wie mit einem Ajax-Aufruf. Für meine eigene Anwendung implementiere ich einen Schutz für "Login CSRF" -Angriffe, eine Variante von CSRF-Angriffen, indem ich einen Cookie mit einem zufälligen Token auf dem Anmeldebildschirm vor der Anmeldung des Benutzers festlege und dieses Token überprüfe, wenn der Benutzer sendet seine Anmeldedaten. Lesen Sie mehr über Login CSRF von Google. Ein Nebeneffekt davon ist, dass in dem Moment, in dem sie sich einloggen, ich auf die Existenz dieses Cookies prüfen kann - eine zusätzliche Umleitung ist nicht notwendig.
Wo? Im Browser (Client-Seite)? Oder im Server? (welcher Server) –
Cookies im Server ???? – balexandre
DETECT-Cookies aktiviert/deaktiviert im Server-Seitencode, ja. –