访问被拒绝在IE10中进行本地存储

Cli*_*own 51 javascript access-denied local-storage internet-explorer-10

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

触发错误的JavaScript代码行是:

if(window.localStorage.getItem('phone') == null)
Run Code Online (Sandbox Code Playgroud)

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

Twe*_*eek 75

我们的用户在使用Windows 10和Windows 10的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映像中的问题引起的.对于其他有问题的人,我的研究表明,使用"系统清洁"工具可能是罪魁祸首.

  • 如果您想要重现该错误,请运行`icacls%userprofile%\ Appdata\LocalLow/t/setintegritylevel(OI)(CI)H`.H将完整性模式设置为"高"(无论这意味着什么)然后IE将是关于localStorage的肛门. (8认同)
  • 确保在运行ICALS之前关闭IE (5认同)
  • 要像@skrebbel建议的那样重现,请以管理员身份运行CMD.(开始>搜索"cmd">右键单击>以管理员身份运行>`icacls%userprofile%\ Appdata\LocalLow/t/setintegritylevel(OI)(CI)H`) (3认同)

小智 7

毫无疑问,可能有许多相同症状的原因,但这是解决这个问题的原因.

我只有IE11中的一台,IE11在尝试任何涉及window.localStorage信誉良好且表现良好的网站的JavaScript时,都表现出"拒绝访问"的症状.使用Process Explorer显示,当taskhost.exe(代表Internet Explorer)尝试打开DOMStore\container.datGeneric Read-Write 时,近端原因是ACCESS DENIED .事实上,它比那更糟:如果我删除了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
Run Code Online (Sandbox Code Playgroud)

(请注意该LowCache字符串中的内容)被错误地设置为:

%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\DOMStore
Run Code Online (Sandbox Code Playgroud)

应该是什么时候:

%USERPROFILE%\AppData\LocalLow\Microsoft\Internet Explorer\DOMStore
Run Code Online (Sandbox Code Playgroud)

结果是低完整性localStorage请求被定向到AppData磁盘存储的中等完整性区域,从而生成ACCESS DENIED错误,并终止使用JavaScript window.localStorage.

这个注册表项多年来一定是错误的:也许是对错误平台预览的热情接受的副作用等等.完全删除并重新安装IE11后,此错误仍然存​​在.

中等完整性缓存有一个类似的注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Extensible Cache\DOMStore\CachePath
Run Code Online (Sandbox Code Playgroud)

并且正确地保留为:

%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\DOMStore
Run Code Online (Sandbox Code Playgroud)

不应该改变.


pro*_*tor 3

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

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