Plätzchen Dies ist eine Standardmethode zum Speichern des Status des Client-Browsers. Cookies können kurz nach der Erstellung des Browsers erschienen sein. Warum brauchen wir Cookies? Da das HTTP-Protokoll keinen Status hat, wird ein Flag/Speicher benötigt, um den aktuellen Status des Client-Browsers aufzuzeichnen und sicherzustellen, dass der aktuelle Status des Client-Browsers bekannt ist, wenn der Client-Browser und der Server kommunizieren. Ein Cookie ist ein Container, der diesen Status aufzeichnet. Bei jeder Anforderung wird das Cookie an den Server zurückgeschickt, sodass der Server den aktuellen Status des Browsers kennt. Da das Cookie an den Server zurückgeschickt wird, darf der Inhalt des Cookies nicht zu groß sein und darf höchstens 4 KB nicht überschreiten. Die Einführung der 4-KB-Begrenzung finden Sie unter http://ec.europa.eu/ipg/standards/cookies/index_en.htm. Ein Browser muss insgesamt nur bis zu 300 Cookies speichern und nur die letzten 20 von jeder Domäne verwalten. Die maximale Größe eines Cookies beträgt 4 KB Speicherplatz. In manchen Szenarien kann es jedoch erforderlich sein, mehr als 4 KB oder mehr Daten zu speichern. Diese Daten müssen jedoch nicht bei jeder Anforderung an den Server zurückgeschickt werden. Solange sie im Browser des Kunden gespeichert und von Javascript problemlos gelesen und geschrieben werden können, ist alles in Ordnung. Diese Anforderung ist in den Anwendungsszenarien mittlerer und großer RIAs besonders dringend. Einige Daten werden im Browser des Kunden abgelegt, um Bandbreite zu sparen und die Browsing-Geschwindigkeit zu erhöhen. Der HTML5-Standard bietet bereits Lösungen, um diesem Bedarf gerecht zu werden: sessionStorage, webSqlDatabase und Microsoft IE verfügt über eine userData-Lösung.
Sicherheitswarnung: Aus Sicherheitsgründen ist ein UserData-Speicher nur im selben Verzeichnis und mit demselben Protokoll verfügbar, das zum Speichern des Speichers verwendet wird. Auf Benutzerdaten kann im selben Verzeichnis und mit demselben Protokoll zugegriffen werden, und sie können für längere Zeit auf dem Client-Rechner gespeichert werden. Auch der maximale Speicherplatz wurde deutlich vergrößert. UserData muss an ein Dom-Element gebunden werden. In der Methode userData gibt es eine Methode removeAttribute. Nach dem Testen des Codes stellte ich fest, dass die Methode removeAttribute nicht sehr nützlich zu sein scheint. Um ein userData-Attribut vollständig zu löschen, muss eine Methode wie Cookie Expiration verwendet werden.
Diese Spezifikation führt zwei verwandte Mechanismen ein, ähnlich den HTTP-Sitzungscookies [RFC2965], um strukturierte Daten auf der Clientseite zu speichern. Html5 sessionStorage-Demo: http://html5demos.com/storage Code kopieren Der Code lautet wie folgt:Funktion istIE() { gibt !!Dokument.alles zurück; } Funktion initUserData() { wenn (isIE()) document.documentElement.addBehavior("#default#userdata"); } Funktion saveUserData(Schlüssel, Wert) { var Beispiel; wenn (istIE()) { //IE mit (document.documentElement) versuche { laden(Schlüssel); setAttribute("Wert", Wert); speichern(Schlüssel); returniere getAttribute("Wert"); } fangen (Beispiel) { Alarm (Beispiel: Nachricht) } } sonst wenn (window.sessionStorage) { //FF 2.0+ versuchen { sessionStorage.setItem(Schlüssel, Wert) } fangen (Beispiel) { Alarm (Beispiel); } } anders { alert("Beim Speichern der Benutzerdaten ist ein Fehler aufgetreten. Ihr Browser unterstützt keine Benutzerdaten."); } } Funktion loadUserData(Schlüssel) { var Beispiel; wenn (istIE()) { //IE mit (document.documentElement) versuche { laden(Schlüssel); returniere getAttribute("Wert"); } fangen (Beispiel) { Alarm (Beispiel: Nachricht); returniere null; } } sonst wenn (window.sessionStorage) { //FF 2.0+ versuchen { returniere sessionStorage.getItem(Schlüssel) } fangen (Beispiel) { Alarm (Beispiel) } } anders { alert("Beim Laden der Benutzerdaten ist ein Fehler aufgetreten. Ihr Browser unterstützt keine Benutzerdaten.") } } Funktion deleteUserData(Schlüssel) { var Beispiel; wenn (istIE()) { //IE mit (document.documentElement) versuche { laden(Schlüssel); läuft ab = neues Datum(315532799000).toUTCString(); speichern(Schlüssel); } fangen (Beispiel) { Alarm (Beispiel: Nachricht); } } sonst wenn (window.sessionStorage) { //FF 2.0+ versuchen { sessionStorage.removeItem(Schlüssel) } fangen (Beispiel) { Alarm (Beispiel) } } anders { alert("Beim Löschen der Benutzerdaten ist ein Fehler aufgetreten. Ihr Browser unterstützt keine Benutzerdaten.") } } Die Gemeinsamkeit von userData und sessionStorage besteht darin, dass beide Objekte deutlich mehr Inhalte speichern können als Cookies. Und es wird nicht bei jeder Anfrage zum Server zurückgebracht. Gemäß dem HTML5-Standard und Tests wurde jedoch festgestellt, dass sich userData und sessionStorage an vielen Stellen unterscheiden. Hier ist eine Testseite: ![]() Der SetInsurance-Link führt JavaScript aus, um Daten mithilfe von userData im IE und sessionStore im FF zu schreiben. Unter IE ist die Situation folgende: Der geschriebene Wert geht beim Schließen des IE oder beim Neustarten des Computers nicht verloren. Die Situation unter FF ist sehr interessant: Auf den auf dieser Seite geschriebenen Wert kann auf dieser Seite und auf anderen von dieser Seite geöffneten Seiten zugegriffen werden. Aber auch wenn diese Seite geöffnet ist, kann nicht auf den gespeicherten Wert zugegriffen werden, wenn Sie die Adresse in die Navigationsleiste eingeben und diese Seite öffnen. Auf die auf dieser Seite gespeicherten Werte kann auf der übergeordneten Seite (der Seite, die diese Seite geöffnet hat) nicht zugegriffen werden. Ich habe mir den HTML5-Standard noch einmal angesehen. Der vollständige Name von sessionStorage lautet: Clientseitige Sitzung und dauerhafte Speicherung von Name/Wert-Paaren, was wahrscheinlich bedeutet, dass der im Client gespeicherte Inhalt sitzungsbezogen ist und die gespeicherten Werte von der Sitzung verwaltet werden. Sobald die Sitzung unterbrochen oder verloren geht, verschwinden die gespeicherten Werte. Wenn für die Seite keine Sitzung besteht (übergeordnete Seite, die über die Adressleiste geöffnete Seite), kann der Wert daher nicht abgerufen werden. Wenn FF heruntergefahren oder die Maschine neu gestartet wird, wird der Wert zwangsläufig nicht abgerufen.
Vom W3C: „...eine API zum Speichern von Daten in Datenbanken, die mit einer SQL-Variante abgefragt werden können“ Ich weiß nicht, wie gut die SQLDB von HTML 5 von Browsern unterstützt wird, aber sessionStorage scheint die Anforderungen grundsätzlich erfüllen zu können. |
<<: Sprechen Sie darüber, wie HTML-Escapezeichen durch Code identifiziert werden können.
>>: Detaillierte Erklärung des Kopierobjekts von jQuery
Inhaltsverzeichnis 1. Routing und Seitensprung 2....
brauchen: In der Hintergrundverwaltung gibt es hä...
Unter Graustufenfreigabe versteht man eine Freiga...
Inhaltsverzeichnis 1. Einleitung 2. Schnittstelle...
Inhaltsverzeichnis Vorwort 1. Weniger 2. Importie...
Erstellen Sie zunächst ein spezielles Projektverz...
In diesem Artikel wird der spezifische Code von j...
Ob es sich nun um das Hintergrundbild oder die Tex...
Als ich vor einiger Zeit an einer kleinen Funktio...
1. SSH-Remoteverwaltung SSH ist ein sicheres Kana...
MySQL ist eine relativ einfach zu verwendende rel...
Vorwort Lassen Sie mich Ihnen zeigen, wie ich ein...
Inhaltsverzeichnis Überblick 1. Definieren Sie st...
Das dreidimensionale Säulendiagramm besteht aus d...
Die Linux-Betriebssysteme der RHEL/CentOS-Reihe v...