Доступ запрещен для локального хранилища в IE10

Вчера я установил Windows 8 и теперь пытаюсь понять, почему я получаю сообщение «Доступ запрещен» при доступе к локальному хранилищу. Страница обслуживается на том же компьютере, что и браузер (http: // localhost). Мне кажется, что одна из настроек безопасности в IE 10 неправильная, но я не понял, какая именно.

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

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

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


person Clint Brown    schedule 27.10.2012    source источник
comment
Не могу повторить, здесь отлично работает. Не могли бы вы попробовать запустить демоверсию на jsfiddle?   -  person Joachim Isaksson    schedule 27.10.2012
comment
У меня такое ощущение, что это могло сработать для вас из-за разных настроек безопасности? Я собираюсь попробовать еще немного поиграть со своим, прежде чем работать над демо. Если ваши настройки другие, то, скорее всего, демоверсия подойдет и вам. Если найду ответ, выложу.   -  person Clint Brown    schedule 27.10.2012
comment
Я немного сузил круг вопросов. Когда я использую инструменты разработчика F12 на localhost, при вводе часов для window.localStorage возникает ошибка «Доступ запрещен». Если сделать это на общедоступном веб-сайте (microsoft.com), отобразится объект хранилища. Так что вполне вероятно, что демонстрация на jsfiddle не будет работать, потому что это общедоступный сайт. Я собираюсь попробовать порыться в настройках безопасности IE10 между Интернетом и локальной интрасетью, чтобы увидеть, улавливает ли это различие.   -  person Clint Brown    schedule 27.10.2012
comment
Я заметил, что window.localStorage выдает ошибку Access Denied, а window.sessionStorage - нет. В этом случае мне все равно следовало использовать sessionStorage, поэтому я собираюсь модернизировать приложение. Однако все равно было бы неплохо понять, что происходит. Код отлично работал в Win7 / IE9.   -  person Clint Brown    schedule 27.10.2012
comment
Я запускаю код, который вы предоставили с localhost, и он хорошо работает. Компьютер, который я использую, - это установленная по умолчанию Win8 (без подключения к домену) с IE в основном только что запущенным, а не настроенным. Вы находитесь в домене, который добавляет параметры безопасности к вашему компьютеру?   -  person Joachim Isaksson    schedule 27.10.2012
comment
Не придираться, но я считаю, что этот вопрос относится к суперпользователю, поскольку ваш вопрос на самом деле не связан с кодом. Если бы вы искали SuperUser, вы могли бы найти мой вопрос с похожей проблемой. Просто говорю ;)   -  person programstinator    schedule 28.11.2012
comment
Я не знал о сайте SuperUser. Похоже, хороший инструмент для добавления в инструментарий. Я действительно понял, что исходный вопрос был больше ориентирован на пользователя, чем на код, но проблема возникла из-за кода, который я написал. Исходя из этой аргументации, я подумал, что кто-то другой, кодирующий то же самое, может также посмотреть на StackOverflow.   -  person Clint Brown    schedule 30.11.2012
comment
Я также могу воспроизвести это на предприятии win8, подключенном к домену, рабочей станции x64.   -  person x0n    schedule 17.04.2013


Ответы (8)


У наших пользователей были проблемы с веб-сайтами, использующими функцию 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, который мы развернули на наших рабочих станциях. Для других, у которых возникла проблема, мое исследование показало, что в этом может быть виновато использование утилиты «очистки системы».

person Tweek    schedule 30.12.2013
comment
Убедитесь, что вы закрыли IE перед запуском ICALS - person Eric Labashosky; 21.11.2014
comment
Если вместо этого вы хотите воспроизвести ошибку, запустите icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)H. H устанавливает режим целостности на высокий (что бы это ни значило), а затем IE будет задумываться о localStorage. - person skrebbel; 11.06.2015
comment
Чтобы воспроизвести, как предлагает @skrebbel, запустите CMD от имени администратора. (начало ›команда поиска› щелкните правой кнопкой мыши ›запустить от имени администратора› icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)H) - person Simon Epskamp; 26.04.2016
comment
Отличная тема! Думаю, вам тоже может быть интересна эта ссылка. Проблема не только в IE11 answers.microsoft.com/en-us/ie/forum/ie10-windows_7/ - person Volodymyr Khmil; 16.08.2019

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

У меня был только один из многих ПК с Windows 7 с IE11, показывающих симптом «Доступ запрещен» при попытке любого JavaScript, включающего window.localStorage, с уважаемых и хорошо функционирующих веб-сайтов. Использование Process Explorer показало, что ближайшей причиной был ОТКАЗ В ДОСТУПЕ, когда taskhost.exe (действующий от имени Internet Explorer) пытался открыть DOMStore\container.dat для общего чтения-записи. На самом деле, все было еще хуже: если я удалил container.dat, произошел тот же ACCESS DENIED, даже если файл больше не существовал. И, если я удалил (скрытую) папку DOMStore, когда taskhost.exe попытался воссоздать ее, она также получила ЗАПРЕЩЕННЫЙ ДОСТУП.

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

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

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

в результате чего запросы localStorage с низким уровнем целостности направлялись в области дискового хранилища 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

и не должно быть изменено.

person Robin Walker    schedule 10.05.2014
comment
Что делать, если папка DOMStore отсутствует в Extensible Cache? - person cs_pupil; 19.01.2018

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

Ссылки по теме: Расширенный защищенный режим

person programstinator    schedule 28.11.2012

Марк Руссинович всегда говорит: «В случае сомнений используйте Process Monitor»:

Данные localStorage хранятся в файлах XML в следующей папке: C: \ Users \ [ИМЯ ПОЛЬЗОВАТЕЛЯ] \ AppData \ Local \ Microsoft \ Internet Explorer \ DOMStore

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

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

person Luis Cantero    schedule 24.01.2013
comment
К сожалению, на моем компьютере даже нет папки DOMStore в папке Internet Explorer. Вы используете IE10 в Windows 8? Это должна быть версия Metro / Modern, так как она отлично работает с версией Legacy. - person Clint Brown; 24.01.2013
comment
О, вы никогда не упоминали об использовании иммерсивного режима. Я использую IE10 на Win8 Enterprise. Вместо этого проверьте эту папку: C: \ Users \ [ИМЯ ПОЛЬЗОВАТЕЛЯ] \ AppData \ Local \ Packages \ windows_ie_ac_001 \ AC \ Microsoft \ Internet Explorer \ DOMStore - person Luis Cantero; 24.01.2013
comment
Единственная папка, которую я нахожу в папке Internet Explorer, - это iconcache. - person Clint Brown; 25.01.2013
comment
Убедитесь, что вы можете увидеть скрытые файлы и папки и сообщить мне, если DOMStore все еще отсутствует. - person Luis Cantero; 25.01.2013
comment
Да, я убедился, что могу видеть скрытые вещи. Это всегда одна из первых вещей, которые я меняю при установке Windows. Не выдержу дефолта! - person Clint Brown; 25.01.2013
comment
1. Вы используете доменную, локальную учетную запись или учетную запись Microsoft (например, hotmail)? 2. ПК доверяет? (см. Настройки ПК) 3. Независимо от того, какой тип учетной записи вы используете, попробуйте другие типы и дайте мне знать, что произойдет. 4. Создайте папку с именем DOMStore в двух папках \ Internet Explorer, о которых я упоминал выше, и убедитесь, что вы, администраторы и система имеют полный доступ к этой папке. 5. При повторении тестов вам нужно будет перезапустить IE10, чтобы изменения вступили в силу. - person Luis Cantero; 25.01.2013
comment
Луис Кантеро, не могли бы вы мне помочь? Та же проблема. Script5: Доступ запрещен (когда веб-сайт использует localStorage). Это W7 IE10. Это скриншот Process Monitor и других полезных вещей. i.imgur.com/X3VUwM3.jpg Пользователь и система имеют доступ к файлу (по умолчанию обычный настройки) - person corbacho; 01.07.2013
comment
Я также не вижу папку DOMStore (отображаются скрытые файлы). Но если вы введете его в адресную строку, вы сможете перейти в папку. - person Rumpleteaser; 03.07.2013
comment
Процесс Moitor показывает слишком много данных, даже после этого я отфильтровываю УСПЕХ. Всем были предоставлены полные права доступа к этой папке, но по-прежнему ничего. Обновление IE10 10.0.0.7 для Windows 7. - person ulu; 02.08.2013
comment
В папке DOMStore есть системный атрибут (для меня). Вам может потребоваться очистить папку Скрыть защищенные файлы операционной системы (рекомендуется), чтобы ее увидеть. - person Euro Micelli; 29.04.2014
comment
Точно, @Euro Micelli: я только что проверил это на win8.1 x64 с IE11 и могу подтвердить, что только если вы оба установите флажок «Показывать скрытые файлы» и снимите флажок «Скрыть защищенные системные файлы», вы увидите эти файлы ... - person Luke; 18.11.2015

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

person VladMX    schedule 08.01.2014

Я добавил задействованные веб-сайты в раздел "Надежные сайты" IE и больше не получал ошибку.

person northben    schedule 20.10.2014

В дополнение к уже отличным ответам здесь я хотел бы добавить еще одно наблюдение. В моем случае разрешения NTFS в структуре каталогов Windows% LOCALAPPDATA% были каким-то образом нарушены.

Чтобы диагностировать эту проблему. Я создал новую учетную запись (профиль) Windows, которая отлично работала с localStorage, поэтому я тщательно просмотрел соответствующие деревья% LOCALAPPDATA% \ Microsoft \ Internet Explorer в поисках расхождений.

Я нашел эту жемчужину:

C:\Users\User\AppData\Local\Microsoft>icacls "Internet Explorer"
Internet Explorer Everyone:(F)

Я не имею ни малейшего представления о том, как разрешения были широко открыты!

Хуже того, все подкаталоги отключены. Неудивительно, что DOMStore был недоступен!

Рабочие разрешения от другой учетной записи были:

 NT AUTHORITY\SYSTEM:(OI)(CI)(F)
 BUILTIN\Administrators:(OI)(CI)(F)
 my-pc\test:(OI)(CI)(F)

Что соответствует разрешениям родительского каталога.

Итак, в припадке лени я решил проблему, установив все каталоги Internet Explorer и ниже наследования разрешений. ПРАВИЛЬНО было бы применить каждое разрешение вручную и не полагаться на функцию наследования. Но одна вещь, которую нужно проверить, - это разрешения NTFS для% LOCALAPPDATA% \ Microsoft \ Internet Explorer, если вы столкнулись с этой проблемой. Если у DOMStore нарушены права доступа, все попытки доступа к localStorage будут встречаться с отказом в доступе.

person Phillip Remaker    schedule 08.08.2020

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

32-битная ОС:

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

64-битная ОС:

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

См. IE MSDN blog для получения дополнительных сведений.

person Mitch    schedule 21.06.2015
comment
C: \ Windows \ SysWOW64 \ ie4uinit.exe -BaseSettings не найден, и ссылка на блог MSDN не работает. - person Phillip Remaker; 08.08.2020
comment
@PhillipRemaker, не уверен. Поскольку он все еще существует в собственной разрядности (system32), я могу предположить, что отдельный вызов SysWow64 больше не требуется. - person Mitch; 09.08.2020
comment
Я обновил ссылку, включив архивную версию сообщения MSDN. Думаю, 32-битный вариант отлично работает на современной 64-битной Windows. Это не решило мои проблемы, которые заключались в необъяснимом повреждении разрешений в% LOCALAPPDATA% \ Microsoft \ Internet Explorer - я добавил ответ по этому поводу. - person Phillip Remaker; 10.08.2020