当我以下一种方式将历史记录推送到浏览器时:
window.history.pushState(
{
some_safe_data: data
},
'some secure title',
'//' + translation + '/' + book + '/' + chapter + '/'
)
它说我SecurityError: The operation is insecure
.问题出在"//"中。当我尝试用一个斜杠推送网址时 - 它有效。当我添加一个新时 - 它给了我一个错误。
为什么两个斜杠不安全?
当您使用单个"/"时,您将附加到当前域,当您使用双"/"时,您将当前域名替换为"翻译",由于同源策略,这是不允许的。
新网址可以是与当前网址位于同一来源的任何网址。相反,仅当您仅修改哈希时,设置 window.location 才会使您保持在同一文档中。
pushState Mozilla docs