IE10 中的本地存储访问被拒绝

IT技术 javascript local-storage access-denied internet-explorer-10
2021-02-24 19:18:52

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

触发错误的 JavaScript 代码行是:

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

该代码在最新版本的 Chrome 中运行良好。

6个回答

我们的用户在使用带有 IE 10 的 Windows 8 上使用 LocalStorage 功能(包括 Twitter)的网站时遇到问题。在打开 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 映像中的问题引起的。对于其他遇到问题的人,我的研究表明使用“系统清理器”实用程序可能是罪魁祸首。

确保在运行 ICALS 之前关闭 IE
2021-04-21 19:18:52
好话题!我想你可能也会觉得这个链接很有趣。问题不仅在 IE11 answers.microsoft.com/en-us/ie/forum/ie10-windows_7/...
2021-04-22 19:18:52
要重现,就像@skrebbel 建议的那样,以管理员身份运行 CMD。(开始>搜索“cmd”>右键单击>以管理员身份运行> icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)H
2021-05-12 19:18:52
相反,如果您想重现该错误,请运行icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)H. H 将完整性模式设置为“高”(无论这意味着什么),然后 IE 将对 localStorage 进行分析。
2021-05-19 19:18:52

毫无疑问,相同症状的原因可能有很多,但这里是为我解决这个问题的方法。

我只有许多装有 IE11 的 Windows 7 PC 中的一台,在尝试任何涉及window.localStorage其他信誉良好且行为良好的网站的JavaScript 时都表现出“拒绝访问”的症状Process Explorer 的使用表明,当 taskhost.exe(代表 Internet Explorer)试图打开DOMStore\container.dat通用读写时,最接近的原因是 ACCESS DENIED 事实上,更糟糕的是:如果我删除了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

并且不应更改。

如果可扩展缓存下缺少 DOMStore 文件夹怎么办?
2021-04-29 19:18:52

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

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

Mark Russinovich 总是说:“如有疑问,请使用Process Monitor ”:

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

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

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

哦,你从来没有提到使用沉浸式模式。我在 Win8 Enterprise 上运行 IE10。请改为检查此文件夹:C:\Users\[USERNAME]\AppData\Local\Packages\windows_ie_ac_001\AC\Microsoft\Internet Explorer\DOMStore
2021-04-25 19:18:52
不幸的是,我的计算机在 Internet Explorer 文件夹中甚至没有 DOMStore 文件夹。您是否在 Windows 8 中运行 IE10?它需要是 Metro/Modern 版本,因为它适用于 Legacy 版本。
2021-05-08 19:18:52
确保您可以看到隐藏的文件和文件夹,如果 DOMStore 仍然丢失,请告诉我。
2021-05-08 19:18:52
DOMStore 文件夹有一个 System 属性(对我来说)。您可能需要清除“隐藏受保护的操作系统文件(推荐)文件夹”才能看到它。
2021-05-10 19:18:52
我在 Internet Explorer 文件夹中找到的唯一文件夹是 iconcache。
2021-05-11 19:18:52

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