webentwicklung-frage-antwort-db.com.de

Zugriff für localstorage in IE10 verweigert

Ich habe gestern Windows 8 installiert und versuche jetzt zu verstehen, warum beim Zugriff auf localstorage die Meldung "Zugriff verweigert" angezeigt wird. Die Seite wird auf demselben PC mit dem Browser (http: // localhost) bereitgestellt. Mein Gefühl ist, dass eine der Sicherheitseinstellungen in IE 10 falsch ist, aber ich habe nicht herausgefunden, welche davon ausgewählt wurde.

Die JavaScript-Codezeile, die den Fehler auslöst, lautet:

if(window.localStorage.getItem('phone') == null)

Der Code funktioniert gut in der neuesten Version von Chrome.

51
Clint Brown

Unsere Benutzer hatten Probleme mit Websites, die die LocalStorage-Funktion (einschließlich Twitter) unter Windows 8 mit IE 10 verwendeten. Beim Zugriff auf eine dieser Websites mit geöffneten F12-Entwicklertools wurde die Meldung SCRIPT5: Access is denied angezeigt auf der Konsole.

Nachdem wir mit dem Microsoft-Support zusammengearbeitet haben, haben wir die Ursache ermittelt. Es stellte sich heraus, dass die Einstellungen im Ordner C:\Users\username\Appdata\LocalLow in ihrem Benutzerprofil problematisch waren.

Jeder Ordner auf Ihrem Computer verfügt über eine Integritätseinstellung. Weitere Informationen zum Zweck dieser Einstellung finden Sie hier: http://msdn.Microsoft.com/en-us/library/bb625964.aspx

Die Integritätseinstellung für den Ordner AppData\LocalLow (und seine Unterordner) in jedem Benutzerprofil sollte auf "Niedrig" (daher der Name) festgelegt werden. In unserem Fall wurde die Integritätsstufe in diesem Ordner nicht richtig eingestellt. Führen Sie den folgenden Befehl in einem Eingabeaufforderungsfenster aus, um das Problem zu beheben:

icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)L

(Wenn auf dem Computer mehr als ein Benutzerkonto vorhanden ist und die anderen Benutzer dasselbe Problem haben, muss der Befehl unter jedem betroffenen Benutzerkonto ausgeführt werden.)

Wie wurde diese Einstellung überhaupt geändert? In unserem Fall wurde dies durch ein Problem in dem angepassten Windows 8-Image verursacht, das wir auf unseren Arbeitsstationen bereitgestellt haben. Für andere, die das Problem haben, hat meine Forschung ergeben, dass die Verwendung eines "System Cleaner" -Dienstprogramms schuld sein kann.

71
Tweek

Zweifellos gibt es viele Ursachen für die gleichen Symptome, aber hier ist, was dieses Problem für mich behoben hat.

Ich hatte nur einen von vielen Windows 7-PCs mit IE11, die das Symptom "Zugriff verweigert" zeigten, als ich versuchte, JavaScript mit window.localStorage von ansonsten seriösen und gut gehandhabten Websites zu versuchen. Die Verwendung von Process Explorer ergab, dass die proximale Ursache ein Zugriff war, der verweigert wurde, als taskhost.exe (im Auftrag von Internet Explorer) versuchte, DOMStore\container.dat für generisches Lesen und Schreiben zu öffnen. Tatsächlich war es schlimmer als das: Wenn ich container.dat gelöscht habe, ist der gleiche Zugriff auf Zugriff aufgetreten, obwohl die Datei nicht mehr vorhanden war. Und wenn ich den (versteckten) Ordner DOMStore gelöscht habe, als taskhost.exe versucht hat, ihn neu zu erstellen, erhielt er auch den Zugriff auf Zugriff.

Nach zwei Tagen der Verfolgung falscher Hinweise war die endgültige Lösung folgende:

Der Registrierungseintrag:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\LowCache\Extensible Cache\DOMStore\CachePath

(Beachten Sie, dass die Variable LowCache in dieser Zeichenfolge falsch eingestellt wurde):

%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\DOMStore

wann sollte es sein:

%USERPROFILE%\AppData\LocalLow\Microsoft\Internet Explorer\DOMStore

mit der Folge, dass localStorage-Anforderungen mit niedriger Integrität an Regionen mit mittlerer Integrität des AppData-Plattenspeichers gerichtet wurden, wodurch ACCESS DENIED-Fehler generiert und die Verwendung von JavaScript window.localStorage beendet wurde.

Dieser Registry-Eintrag muss seit vielen Jahren falsch gewesen sein: vielleicht eine Nebenwirkung der begeisterten Übernahme von fehlerhaften Plattform-Vorschauen und so weiter. Dieser Fehler hat die vollständige Entfernung und Neuinstallation von IE11 überlebt.

Es gibt einen ähnlich aussehenden Registrierungseintrag für den Cache mit mittlerer Integrität:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Extensible Cache\DOMStore\CachePath

und das ist richtig belassen als:

%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\DOMStore

und sollte nicht geändert werden.

6
Robin Walker

Aktivieren Sie den erweiterten geschützten Modus in den Einstellungen IE auf der Registerkarte "Erweitert" in der Unterliste "Sicherheit". Dies aktiviert den Microsoft XSS-Filter. Ich hatte ähnliche Probleme, als ich mich bei SE anmeldete und Google + Benachrichtigungen abrief, und meine erste Problemumgehung begann IE mit Administratorrechten. Aber ich denke, der EP-Modus wird auch in Ihrem Fall den Trick tun. 

Verwandte Links: Grundlegendes zum erweiterten geschützten Modus

3
programstinator

Mark Russinovich sagt immer: "Im Zweifelsfall verwenden Sie Process Monitor ":

localStorage-Daten werden in XML-Dateien im folgenden Ordner gespeichert: C:\Users\[Benutzername]\AppData\Local\Microsoft\Internet Explorer\DOMStore

Ein Profil der Dateiaktivität während der Reproduktion des Problems kann Ihnen sagen, ob das Problem durch fehlende Dateizugriffsberechtigungen oder möglicherweise durch ein Antivirenprogramm verursacht wird.

Ich kann den Fehler reproduzieren, indem ich das schreibgeschützte Attribut zu "DOMStore\container.dat" hinzufüge. Sie sollten prüfen, ob alle Datei-/Ordnerberechtigungen und -attribute richtig eingestellt sind. Auf meinem Computer haben Administratoren und mein eigener Account die volle Berechtigung für den genannten Ordner.

3
Luis Cantero

Gehen Sie zu Extras/Internetoptionen/Erweitert und aktivieren Sie unter "Sicherheit" das Kontrollkästchen "DOM-Speicher aktivieren". Dies sollte das Problem beheben

2
VladMX

Ich habe die betroffenen Websites zum Abschnitt "Vertrauenswürdige Sites" von IE hinzugefügt und habe den Fehler nicht erneut erhalten.

0
northben

Dieses Problem kann auch durch fehlende oder beschädigte Registrierungseinträge verursacht werden. Wenn a reset das Problem nicht löst, hat der Ordner LocalLow die richtige Integritätsstufe und der Registrierungswert DOMStore ist korrekt . Führen Sie die folgenden Befehle aus, um IE im Profil:

32-Bit-Betriebssystem:

C:\WINDOWS\system32\ie4uinit.exe -BaseSettings

64-Bit-Betriebssystem:

C:\WINDOWS\system32\ie4uinit.exe -BaseSettings
C:\Windows\SysWOW64\ie4uinit.exe -BaseSettings

Weitere Informationen finden Sie im IE MSDN-Blog .

0
Mitch