SecurityError:操作不安全 - window.history.pushState()

时间:2012-11-12 17:49:20

标签: javascript html5 url history pushstate

我在Firefox的控制台中遇到此错误:SecurityError: The operation is insecure并且当我尝试使用AJAX加载某些内容时,有罪的是HTML5功能:window.history.pushState()。它应该加载一些数据但Javascript在错误时停止执行。

我想知道为什么会这样。这是一些服务器配置错误吗?任何帮助将不胜感激。

更新:是的,这是域名不匹配的服务器错误:http://en.wikipedia.org/wiki/Same-origin_policy

10 个答案:

答案 0 :(得分:36)

确保您关注Same Origin Policy。这意味着相同的域,相同的子域,相同的协议(http vs https)和相同的端口。

How does pushState protect against potential content forgeries?

编辑:正如@robertc在他的评论中恰当地指出的那样,一些浏览器实际上在原点为file:///时实施略有不同的安全策略。更不用说当页面期望它从不同的原点运行时,使用file:///进行本地测试时会遇到问题(因此您的pushState会假设生产源方案,而不是localhost方案)

答案 1 :(得分:7)

我们遇到 SecurityError:当用户在访问我们的网站之前禁用了他们的cookie时,操作是不安全的,任何后续尝试使用会话的XHR请求都会明显失败并导致此错误。

答案 2 :(得分:3)

在我的情况下,我错过了'www。'从我推动的网址。它必须完全匹配,如果您正在使用www.test.com,则必须转到www.test.com而不是test.com

答案 3 :(得分:3)

您应该尝试不使用文件夹资源管理器方法(即file://)打开文件,而是从http://打开该文件(即http://yoursite.com/来自http://localhost/)< / p>

答案 4 :(得分:1)

当从文件中调用另一个javascript文件而没有放置javascript“物理”地址时,我遇到了同样的问题。 我通过从html中调用它来解决它,例如:“JS / archivo.js”而不是“archivo.js”

答案 5 :(得分:1)

创建PWA时,非https服务器上使用的服务工作者也会生成此错误。

答案 6 :(得分:0)

在index.js文件中将serviceWorker.unregister()替换为serviceWorker.register()

答案 7 :(得分:0)

我通过从http协议切换到file协议来解决了这个问题。

  • 您可以在VS代码中使用“实时服务器”扩展名,
  • 或者在节点上使用live-server [dirPath]

答案 8 :(得分:0)

我在ReactJS历史记录推送时遇到了这个问题,原来我正在尝试打开//link(带有双斜杠)

答案 9 :(得分:0)

我遇到了同样的问题,这是由于将 <base href=> 设置为裸域,而我的服务器始终为 www 域提供服务。将 www 添加到 base href 中的 url 解决了该问题。