首页 > 解决方案 > “SecurityError:操作不安全。” 在浏览器js中推送历史

问题描述

当我以另一种方式将历史记录推送到浏览器时:

window.history.pushState(
          {
            some_safe_data: data
          },
          'some secure title',
          '//' + translation + '/' + book + '/' + chapter + '/'
        )

它说我SecurityError: The operation is insecure。问题出在'//'中。当我尝试用一​​个斜杠推送 url 时——它有效。当我添加一个新的时——它给了我一个错误。

为什么两个斜杠不安全?

标签: javascriptsecurity

解决方案


当您使用单个“/”时,您附加到当前域,当您使用双“/”时,您将当前域名替换为“翻译”,这是不允许的,因为同源策略。

新 URL 可以是与当前 URL 同源的任何 URL。相反,仅当您仅修改哈希时,设置 window.location 才能使您保持在同一个文档中。

pushState Mozilla 文档


推荐阅读