在使用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;
您还可以&#34;运行代码段&#34;并在控制台中查看错误。
此错误在今天之前没有发生。我没有更改我在浏览器中加载html文件的代码或方法。它过去工作得很好 - 我为所有的PhoneGap应用程序使用相同的代码。
是否有人知道是否存在导致此安全错误的Chrome安全更新,或者我是否遗漏了某些内容?你会如何调试这个?谢谢。
更新
我认为这个讨论指出了我所怀疑的情况,因为在运行Web服务器时没有出现错误:Origin null is not allowed by Access-Control-Allow-Origin。
但我仍然想知道为什么在过去这一天发生了变化,Chrome是否改变了他们的安全政策,或者之前的原因是什么,以及我的任何PhoneGap应用是否会受到影响。
答案 0 :(得分:4)
此错误与origin is null错误相同。由于Chrome的安全功能,会发生此错误。 测试应用程序的一个简单解决方案是绕过chrome的这种安全性。
<强>步骤:强>
快点,错误消失了。应用效果非常好。
注意:这只是我用来在桌面浏览器上测试我的cordova应用程序以进行UI测试的解决方法。
答案 1 :(得分:2)
临时解决方案:我已经在jquery mobile中注释了所有history.replaceState
次来电,无论如何都不需要在我的应用中操纵浏览器历史记录。
我想知道它是否是Chrome安全漏洞或模型和未来行为。
答案 2 :(得分:1)
在Mac上,我可以通过运行网络服务器而不是从“file://”网址加载来解决这个问题:
python -m SimpleHTTPServer 8000
目录中应该通过0.0.0.0
从Chrome中获取答案 3 :(得分:0)
我似乎没有同样的问题,不是稳定版Chrome(45)或开发版(47)。
但是,我个人也看到了CORS标题的问题。如果您能够可靠地解决问题,我建议您在crbug.com处提交错误,Chrome开发人员会对其进行审核。