【问题标题】:SecurityError: The operation is insecure - window.history.pushState()SecurityError:操作不安全 - window.history.pushState()
【发布时间】:2012-11-01 04:11:54
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否通过file:/// URL 访问?
  • @robertc 你是什么意思?一直是http://。我怀疑这可能是因为使用了子域,但pushState 试图只推送/,所以它不应该有任何影响。

标签: javascript html url history pushstate


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          在创建 PWA 时,在非 https 服务器上使用的 service worker 也会产生此错误。

          【讨论】:

            【解决方案6】:

            当用户在访问我们的网站之前禁用其 cookie 时,我们遇到了 SecurityError: The operation is insecure,任何尝试使用该会话的后续 XHR 请求显然都会失败并导致此错误。 p>

            【讨论】:

            • 当用户禁用 cookie 时,您可以将 XHR 请求代码包装在 try/catch 块中,并使用 catch 提示用户启用 cookie。包装 window.localStoragewindow.history.pushState() 或任何 XHR 请求。
            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

                就我而言,我缺少“www”。从我推的网址。必须完全匹配,如果您正在处理www.test.com,则必须推送到www.test.com 而不是test.com

                【讨论】:

                  【解决方案10】:

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

                  How does pushState protect against potential content forgeries?

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

                  【讨论】:

                  • 那么pushStatefile:///如何使用呢?
                  猜你喜欢
                  • 2013-04-28
                  • 2016-05-04
                  • 2019-01-28
                  • 1970-01-01
                  • 2020-04-03
                  • 2014-05-19
                  • 1970-01-01
                  • 2016-09-10
                  • 2018-10-17
                  相关资源
                  最近更新 更多