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

我在 Firefox 的 Console: SecurityError: The operation is insecure中得到了这个错误,当我尝试用 AJAX 加载某些东西时,错误在于 HTML5功能: window.history.pushState()。它应该加载一些数据,但 Javascript 在出错时停止执行。

我想知道为什么会发生这种情况。是服务器配置错误吗? 如果有任何帮助,我将不胜感激。

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

160549 次浏览

请确保遵循 同一原产地政策。这意味着相同的域,相同的子域,相同的协议(http vs https)和相同的端口。

PushState 如何防止潜在的内容伪造?

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

在我的情况下,我错过了‘ www。从我推送的网址。它必须是完全匹配的,如果你在 www.test.com工作,你必须推到 www.test.com,而不是 test.com

您应该尝试不要使用文件夹浏览器方法(即 file://)打开该文件,而是从 http://(即 http://yoursite.com/http://localhost/)打开该文件

当我从一个文件中调用另一个 javascript 文件而没有添加 javascript“物理”地址时,我遇到了同样的问题。 我解决这个问题的方法是在 html 中以相同的方式调用它,例如: “ JS/archive vo.JS”而不是“ archive vo.JS”

当用户在访问我们的站点之前禁用了他们的 cookie 时,我们经历了 SecurityError: 操作不安全,任何后续的试图使用会话的 XHR 请求显然会失败并导致这个错误。

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

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

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

  • 你可以在 VS 代码中使用“ live-server”扩展,
  • 或者在节点上使用 live-server [dirPath]

我在 ReactJS 历史推送时遇到了这个问题,结果我试图打开 //link(使用双斜杠)

我有同样的问题,它是由设置 <base href=>到一个裸域,而我的服务器始终服务的 www 域。在 base href中将 www 添加到 URL 解决了这个问题。