Подтвердить что ты не робот

Доступ запрещен для localstorage в IE10

Вчера я установил Windows 8 и теперь пытаюсь понять, почему я получаю сообщение "Отказано в доступе" при доступе к localstorage. Страница выполняется на том же ПК с браузером (http://localhost). Я чувствую, что один из параметров безопасности в IE 10 ошибочен, но я не понял, какой из них.

Строка кода JavaScript, вызывающая ошибку:

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

Код работает отлично в последней версии Chrome.

4b9b3361

Ответ 1

У наших пользователей возникли проблемы с веб-сайтами, используя функцию LocalStorage (включая Twitter) в Windows 8 с IE 10. При открытии одного из этих сайтов с помощью инструментов разработки F12 на консоли появилось сообщение SCRIPT5: Access is denied.

После работы с поддержкой Microsoft мы определили причину. Это оказалось проблемой с настройками в папке C:\Users\username\Appdata\LocalLow в их профиле пользователя.

Каждая папка на вашем компьютере имеет настройку целостности. Более подробная информация об этой настройке приведена здесь: http://msdn.microsoft.com/en-us/library/bb625964.aspx

Предпочитается установить параметр целостности в папке AppData\LocalLow (и ее вложенных папок) в каждом профиле пользователя "Низкий" (отсюда и название). В нашем случае уровень целостности был установлен неправильно в этой папке. Чтобы устранить проблему, запустите следующую команду в окне командной строки:

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

(Если на компьютере имеется более одной учетной записи пользователя, а у других пользователей такая же проблема, эта команда должна запускаться под каждой уязвимой учетной записью пользователя.)

Как изменился этот параметр в первую очередь? В нашем случае это было вызвано проблемой в настроенном образе Windows 8, который мы развернули на наших рабочих станциях. Для других, у которых возникла проблема, мои исследования показали, что использование утилиты "очиститель системы" может быть виноватой.

Ответ 2

Попробуйте включить расширенный защищенный режим в настройках IE на вкладке "Дополнительно" в подменю "Безопасность". Это позволяет использовать фильтр Microsoft XSS. У меня были подобные проблемы при входе в SE, а также при получении уведомлений Google +, и в моем первом обходном пути был запущен IE с правами администратора. Но я думаю, что режим EP будет делать трюк в вашем случае.

Ссылки по теме: Общие сведения об улучшенном защищенном режиме

Ответ 3

Марк Руссинович всегда говорит: "Если у вас есть сомнения, используйте " Монитор процессов":

localStorage данные хранятся в файлах XML в следующей папке: C:\Users\[USERNAME]\AppData\Local\Microsoft\Internet Explorer\DOMStore

Профиль активности файла при воспроизведении проблемы может сообщить вам, возникла ли проблема из-за отсутствия прав доступа к файлу или, возможно, даже антивирусной программы.

Я могу воспроизвести ошибку, добавив атрибут "только для чтения" в "DOMStore\container.dat". Вы должны проверить правильность установки всех прав доступа и атрибутов файлов/папок. На моей машине администраторы и моя учетная запись имеют полное разрешение для указанной папки.

Ответ 4

Несомненно, может быть много причин тех же самых симптомов, но вот что исправило эту проблему для меня.

У меня был только один из многих ПК с Windows 7 с IE11, демонстрирующий симптом "Отказано в доступе" при попытке любого JavaScript, включающего window.localStorage, с других авторитетных и хорошо управляемых веб-сайтов. Использование Process Explorer показало, что проксимальная причина была ACCESS DENIED, когда taskhost.exe(действуя от имени Internet Explorer) попытался открыть DOMStore\container.dat для Generic Read-Write. На самом деле это было хуже: если я удалил container.dat, тот же самый ACCESS DENIED произошел, даже через файл больше не существовало. И если я удалил (скрытую) папку DOMStore, когда taskhost.exe попытался ее воссоздать, это также получило ACCESS DENIED.

После двух дней преследования ложных проводов окончательным решением было следующее:

Запись в реестре:

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

(обратите внимание на LowCache в этой строке) было неправильно установлено:

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

когда это должно быть:

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

вследствие чего запросы локального хранилища с низкой степенью целостности направлялись в регионы с высокой степенью целостности дискового хранилища AppData, тем самым генерируя ошибки ACCESS DENIED и убивая использование JavaScript window.localStorage.

Эта запись в реестре, должно быть, была неправильной в течение многих лет: возможно, побочный эффект энтузиазма при просмотре предварительных просмотров платформы и т.д. Эта ошибка сохранилась при полном удалении и переустановке IE11.

Существует аналогичная запись реестра для кеша средней четкости:

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

и это верно, как:

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

и не следует изменять.

Ответ 5

Перейдите в раздел "Инструменты/Свойства Интернета/Дополнительно" и в разделе "Безопасность" установите флажок "Включить хранилище DOM". Это должно устранить проблему.

Ответ 6

Я добавил сайты, вовлеченные в раздел надежных сайтов IE, и еще не получил ошибку.

Ответ 7

Эта проблема также может быть вызвана отсутствием или повреждением записей реестра. Если a reset не устраняет проблему, папка LocalLow имеет правильную целостность уровень и DOMStore значение реестра верное, выполните приведенные ниже команды, чтобы перерегистрировать IE в профиле:

32-битная ОС:

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

64-битная ОС:

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

Подробнее см. блог IE MSDN.