javascript-IE10中拒绝本地存储访问

昨天我安装了Windows 8,现在尝试了解为什么在访问本地存储时收到“访问被拒绝”消息。 该页面与浏览器([http:// localhost)在同一台PC上提供服务。]我的感觉是IE 10中的安全设置之一是错误的,但是我还没有弄清楚哪一个。

触发错误的JavaScript代码行是:

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

该代码在最新版本的Chrome中可以正常运行。

7个解决方案
75 votes

我们的用户在使用IE 10的Windows 8上使用LocalStorage功能(包括Twitter)的网站遇到问题。在打开F12开发人员工具访问这些网站之一时,控制台上显示SCRIPT5: Access is denied消息。

在获得Microsoft支持之后,我们确定了原因。 原来这是用户配置文件中icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)L文件夹上的设置存在问题。

您计算机上的每个文件夹都有一个完整性设置。 有关此设置目的的更多信息,请参见:[http://msdn.microsoft.com/zh-cn/library/bb625964.aspx]

每个用户的个人资料中icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)L文件夹(及其子文件夹)上的完整性设置应该设置为“低”(因此得名)。 在我们的情况下,在此文件夹上未正确设置完整性级别。 要解决此问题,请在命令提示符窗口中运行以下命令:

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

(如果计算机上有多个用户帐户,而其他用户有相同的问题,则该命令需要在每个受影响的用户帐户下运行。)

至于如何首先更改此设置? 在我们的案例中,这是由我们部署到工作站的自定义Windows 8映像中的问题引起的。 对于其他有此问题的人,我的研究表明,应该指责“系统清洁程序”实用程序的使用。

Tweek answered 2020-01-19T18:22:42Z
7 votes

毫无疑问,可能有许多原因导致相同的症状,但这是为我解决此问题的原因。

我尝试使用IE11的许多Windows 7 PC中只有一台表现出“ Access Denied”的症状,试图从其他信誉良好且行为良好的网站上尝试任何涉及window.localStorage的JavaScript。 使用Process Explorer揭示,当taskhost.exe(代表Internet Explorer)尝试打开DOMStore\container.dat以进行通用读写时,最接近的原因是访问被拒绝。 实际上,这还比这更糟:如果我删除了container.dat,即使文件不再存在,也会发生相同的ACCESS DENIED。 而且,如果我删除了(隐藏的)2709863944222671671875文件夹,当taskhost.exe尝试重新创建它时,该文件夹也将收到ACCESS DENIED。

经过两天的虚假线索,最终的解决方案是:

注册表项:

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

(请注意该字符串中的window.localStorage)被错误地设置为:

%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

并且不应更改。

Robin Walker answered 2020-01-19T18:23:48Z
3 votes

尝试在IE设置的“安全性”子列表中的“高级”选项卡下,启用“增强保护模式”。 这将启用Microsoft XSS筛选器。 登录SE和获取google +通知时,我遇到了类似的问题,而我的第一个解决方法是使用管理员权限启动IE。 但是我认为EP模式也可以解决您的问题。

相关链接:了解增强保护模式

programstinator answered 2020-01-19T18:24:13Z
3 votes

马克·鲁西诺维奇(Mark Russinovich)总是说:“如有疑问,请使用Process Monitor”:

localStorage数据存储在以下文件夹中的XML文件中:C:\ Users \ [USERNAME] \ AppData \ Local \ Microsoft \ Internet Explorer \ DOMStore

重现问题时,文件活动的配置文件可以告诉您问题是由于缺少文件访问权限还是什至是防病毒程序引起的。

通过将只读属性添加到“ DOMStore \ container.dat”,可以重现该错误。 您应该检查是否正确设置了所有文件/文件夹权限和属性。 在我的计算机上,管理员和我自己的帐户拥有所提到文件夹的完全权限。

Luis Cantero answered 2020-01-19T18:24:47Z
2 votes

转到工具/ Internet选项/高级,然后在“安全性”下选择“启用DOM存储”复选框。 这应该解决问题

VladMX answered 2020-01-19T18:25:07Z
0 votes

我将涉及的网站添加到IE的“受信任的站点”部分,并且再次没有收到错误。

northben answered 2020-01-19T18:25:27Z
0 votes

注册表项丢失或损坏也可能导致此问题。 如果重置不能解决问题,则DOMStore文件夹具有正确的完整性级别,并且DOMStore注册表值正确,请运行以下命令以在配置文件中重新注册IE:

32位操作系统:

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

64位操作系统:

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

有关更多详细信息,请参见IE MSDN博客。

Mitch answered 2020-01-19T18:26:01Z
translate from https://stackoverflow.com:/questions/13102116/access-denied-for-localstorage-in-ie10