Chrome SecurityError从本地文件系统加载jQuery Mobile页面

在使用jQuery Mobile引用加载一个简单的简单html文件时,我在Chrome中遇到以下错误。 仅jQuery引用不存在该错误。

未捕获的SecurityError:无法在“历史记录”上执行“replaceState”:无法在原点为“null”的文档中创建URL为“ http://stacksnippets.net/js ”的历史状态对象。

       

您还可以“运行代码段”并在控制台中查看错误。

这个错误在今天之前没有发生。 我没有更改我在浏览器中加载html文件的代码或方法。 它曾经完美地工作 – 我对我所有的PhoneGap应用使用相同的代码。

有谁知道是否有Chrome安全更新导致此SecurityError或我是否遗漏了某些内容? 你会如何调试这个? 谢谢。

UPDATE

我想这个讨论指出了我发生的事情,因为在运行Web服务器时没有出现错误: Access-Control-Allow-Origin不允许使用Origin null 。

但我仍然想知道为什么在过去的一天中这种情况发生了变化,Chrome是否已经改变了他们的安全策略,或者之前的工作原因是什么,以及我的任何PhoneGap应用是否会受到影响。

此错误与origin is null错误相同。 由于Chrome的安全function,会发生此错误。 测试应用程序的简单解决方案是绕过chrome上的此安全性。

脚步:

  1. 在桌面上创建Chrome浏览器快捷方式。
  2. 关闭计算机上所有chrome的实例。
  3. 右键单击chrome的桌面快捷方式,然后单击Properties。
  4. 在Tar​​get字段中,在末尾附加“-allow-file-access-from-files”。
  5. 保存并关闭属性。
  6. 仅通过此快捷方式打开chrome。

快点,错误消失了。 应用程序完美。

注意:这只是我用来在桌面浏览器上测试我的cordova应用程序以进行UI测试的解决方法。

临时解决方案:我已经在jquery mobile中注释掉了所有history.replaceState调用,无论如何都不需要在我的应用程序中操作浏览器历史记录。

我想知道它是否是Chrome安全漏洞或模型和未来行为。

在Mac上,我能够通过运行网络服务器来解决这个问题,而不是从“file://”url加载它:

http://lifehacker.com/start-a-simple-web-server-from-any-directory-on-your-ma-496425450?utm_expid=66866090-49.VYy4WCNHSyuP6EmjnM93MQ.0&utm_referrer=https%3A%2F%2Fwww。 google.com%2F

 python -m SimpleHTTPServer 8000 

在目录中应该通过0.0.0.0从Chrome中获取

我似乎没有相同的问题,不是稳定版的Chrome(45)或开发版(47)。

但是,我个人也看到了CORS标题的问题。 如果你可以让问题可靠地发生,我建议在crbug.com上提交一个错误,Chrome开发人员会看一下它。