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

时间:2015-09-03 21:25:21

标签: javascript jquery google-chrome jquery-mobile

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

  

Uncaught SecurityError:无法执行' replaceState'历史':   包含网址' http://stacksnippets.net/js'的历史状态对象不能   在原文' null'。

的文档中创建



<html>
<head>
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>
</head>
<body></body>
</html>
&#13;
&#13;
&#13;

您还可以&#34;运行代码段&#34;并在控制台中查看错误。

此错误在今天之前没有发生。我没有更改我在浏览器中加载html文件的代码或方法。它过去工作得很好 - 我为所有的PhoneGap应用程序使用相同的代码。

是否有人知道是否存在导致此安全错误的Chrome安全更新,或者我是否遗漏了某些内容?你会如何调试这个?谢谢。

更新

我认为这个讨论指出了我所怀疑的情况,因为在运行Web服务器时没有出现错误:Origin null is not allowed by Access-Control-Allow-Origin

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

4 个答案:

答案 0 :(得分:4)

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

<强>步骤:

  1. 在桌面上创建Chrome浏览器快捷方式。
  2. 关闭计算机上所有的chrome实例。
  3. 右键单击chrome的桌面快捷方式,然后单击Properties。
  4. 在目标字段中
  5. ,在末尾附加“-allow-file-access-from-files”。
  6. 保存并关闭属性。
  7. 仅通过此快捷方式打开Chrome。
  8. 快点,错误消失了。应用效果非常好。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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中获取

答案 3 :(得分:0)

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

但是,我个人也看到了CORS标题的问题。如果您能够可靠地解决问题,我建议您在crbug.com处提交错误,Chrome开发人员会对其进行审核。