48

Ieri ho installato Windows 8 e sto cercando ora di capire perché sto ricevendo un messaggio "Accesso negato" quando accedo a localstorage. La pagina viene servita sullo stesso PC con il browser (http: // localhost). La mia sensazione è che una delle impostazioni di sicurezza in IE 10 sia errata, ma non ho capito quale.Accesso negato per la memorizzazione locale in IE10

La riga di codice JavaScript innescare l'errore è:

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

Il codice funziona bene nella sua ultima versione di Chrome.

+0

Impossibile ripetere, funziona bene qui. Potresti provare a far funzionare una demo su [jsfiddle] (http://jsfiddle.net)? –

+0

Ho la sensazione che potrebbe aver funzionato per te a causa di diverse impostazioni di sicurezza? Proverò a giocherellare con il mio un po 'di più prima di elaborare una demo. Se le tue impostazioni sono diverse, è probabile che la demo funzioni anche per te. Se scopro la risposta, la posterò. –

+0

Ho le cose un po 'ristrette. Quando utilizzo gli Strumenti per sviluppatori F12 su http: // localhost, inserendo un orologio per window.localStorage si verifica un errore Accesso negato. Facendolo su un sito web pubblicamente disponibile (microsoft.com) viene mostrato un oggetto di archiviazione. Quindi è probabile che una demo su jsfiddle non funzioni perché è un sito pubblico. Ho intenzione di provare a pescare nelle impostazioni di sicurezza IE10 tra Internet e Intranet locale per vedere se questo cattura ciò che è diverso. –

risposta

3

Provare ad abilitare la modalità protetta avanzata nelle impostazioni di IE, nella scheda Avanzate, nella sottoscheda Sicurezza. Ciò abilita il filtro Microsoft XSS. Avevo problemi simili durante l'accesso a SE e il recupero di notifiche di Google +, e la mia prima soluzione era l'avvio di IE con i privilegi di amministratore. Ma penso che anche la modalità EP farà il trucco nel tuo caso.

Link correlati: Understanding Enhanced Protected Mode

3

Mark Russinovich dice sempre: "in caso di dubbio, utilizzare Process Monitor": i dati

localStorage viene memorizzato in file XML nella seguente cartella: C: \ Users \ [nome utente ] \ AppData \ Local \ Microsoft \ Internet Explorer \ DOMStore

Un profilo dell'attività del file durante la riproduzione del problema può dirti se il problema è causato dalla mancanza di autorizzazioni di accesso ai file o forse anche un programma antivirus.

Posso riprodurre l'errore aggiungendo l'attributo di sola lettura a "DOMStore \ container.dat". È necessario verificare se tutte le autorizzazioni e gli attributi di file/cartelle sono impostati correttamente. Sulla mia macchina, gli amministratori e il mio account hanno piena autorizzazione per la cartella menzionata.

+0

Sfortunatamente il mio computer non ha nemmeno la cartella DOMStore all'interno della cartella di Internet Explorer. Stai usando IE10 su Windows 8? Deve essere la versione Metro/Modern, in quanto funziona bene con la versione Legacy. –

+1

Oh, non hai mai menzionato usando la modalità immersiva. Sto eseguendo IE10 su Win8 Enterprise. Controllare invece questa cartella: C: \ Users \\ [USERNAME] \ AppData \ Local \ Packages \ windows_ie_ac_001 \ AC \ Microsoft \ Internet Explorer \ DOMStore –

+0

L'unica cartella che trovo nella cartella di Internet Explorer è iconcache. –

62

I nostri utenti hanno riscontrato problemi con i siti Web utilizzando la funzionalità LocalStorage (incluso Twitter) su Windows 8 con IE 10. Quando si accede a uno di questi siti con gli Strumenti di sviluppo F12 aperti, un messaggio SCRIPT5: Access is denied è apparso sulla console.

Dopo aver lavorato con il supporto Microsoft, abbiamo identificato la causa. Si è verificato un problema con le impostazioni della cartella C:\Users\username\Appdata\LocalLow nel proprio profilo utente.

Ogni cartella sul computer ha un'impostazione di integrità. Ulteriori informazioni sullo scopo di questa impostazione sono qui: http://msdn.microsoft.com/en-us/library/bb625964.aspx

L'impostazione di integrità nella cartella AppData\LocalLow (e nelle sue sottocartelle) nel profilo di ciascun utente deve essere impostata su "Bassa" (da cui il nome). Nel nostro caso, il livello di integrità non è stato impostato correttamente su questa cartella. Per risolvere il problema, eseguire il seguente comando in una finestra del prompt dei comandi:

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

(Se v'è più di un account utente sul computer e gli altri utenti stanno avendo lo stesso problema, il comando di bisogni essere eseguito sotto l'account di ciascun utente interessato.)

Per quanto riguarda come questa impostazione è stata modificata in primo luogo? Nel nostro caso, è stato causato da un problema nell'immagine di Windows 8 personalizzata che abbiamo implementato nelle nostre workstation. Per gli altri che stanno avendo il problema, la mia ricerca ha rivelato che l'uso di un programma di "pulizia del sistema" può essere la causa.

+5

Assicurati di aver chiuso IE prima di eseguire ICALS –

+7

Se invece vuoi riprodurre il bug, esegui 'icacls% userprofile% \ Appdata \ LocalLow/t/setintegritylevel (OI) (CI) H'. L'H imposta la modalità di integrità su "alto" (qualunque cosa ciò significhi) e quindi IE sarà anale su localStorage. – skrebbel

+3

Per riprodurre, come suggerisce @skrebbel, eseguire CMD come amministratore. (avvia> cerca "cmd"> fai clic destro> esegui come amministratore> 'icacls% userprofile% \ Appdata \ LocalLow/t/setintegritylevel (OI) (CI) H') –

1

Passare a Strumenti/Opzioni Internet/Avanzate e in "Sicurezza" selezionare la casella di controllo "Abilita archiviazione DOM". Questo dovrebbe risolvere il problema

5

Senza dubbio ci potrebbero essere molte cause degli stessi sintomi, ma ecco cosa ha risolto questo problema per me.

Avevo solo uno dei tanti PC con Windows 7 con IE11 che mostra il sintomo di "Accesso negato" al tentativo di qualsiasi JavaScript che coinvolge window.localStorage da siti Web altrimenti affidabili e ben educati. L'utilizzo di Process Explorer ha rivelato che la causa prossimale era un ACCESSO NEGATO quando taskhost.exe (che agisce per conto di Internet Explorer) tentava di aprire DOMStore\container.dat per lettura-scrittura generica. In effetti, è stato peggio: se ho cancellato container.dat, si è verificato lo stesso ACCESS NEGATO, anche se il file non esisteva più. E, se ho cancellato la cartella (nascosta) DOMStore, quando taskhost.exe ha tentato di ricrearlo, ha ricevuto anche l'ACCESSO NEGATO.

Dopo due giorni di caccia di depistaggi, la soluzione finale è stato questo:

La voce del Registro:

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

(si noti la LowCache in quella stringa) è stato correttamente impostato:

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

quando dovrebbe essere:

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

con la conseguenza che le richieste di localStorage a bassa integrità venivano indirizzate a regioni di integrità media della memoria del disco AppData, generando quindi errori DENIED ACCESS e uccidendo l'uso di JavaScript window.localStorage.

Questa voce del Registro di sistema deve essere stata errata per molti anni: forse un effetto collaterale di utilizzo entusiastico di anteprime di piattaforme buggy e così via. Questo errore è sopravvissuto alla rimozione totale e alla reinstallazione di IE11.

C'è una voce di registro simile di aspetto per la cache di medio integrità:

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

e che viene lasciato come correttamente:

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

e non dovrebbe essere cambiata.

+0

Cosa succede se la cartella DOMStore è mancante in Cache estendibile? –

0

Ho aggiunto i siti Web coinvolti nella sezione Siti attendibili di IE e non ho ancora ricevuto l'errore.

0

Questo problema può essere causato anche dalla mancanza o dalla corruzione di voci di registro. Se a reset non risolve il problema, il LocalLow folder has the correct integrity level, e il DOMStore registry value is correct, eseguire il sotto comandi per registrare nuovamente IE nel profilo:

32 bit OS:

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

64 bit OS:

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

Vedere IE MSDN blog per ulteriori dettagli.