history.replaceState/pushState改变url,但是地址栏没有改变问题

现在公司有一个项目,有一个需求,当从外部网址登录进来之后,会自动重定向到home页,如下:
http://localhost:8889/?sessionId=4724-3551655957868--736132069sh#!/app/home,然后需要将之前提前保存的目的网址(如目的网址是 dashboard页)取出,重定向到目的网址,如window.location.href="http://localhost:8889/app/dashboard"。现在要求,网址中必须不包含sessionId。重定向到dashboard页之后,此时网址是http://localhost:8889/#!/app/dashboard,正常,没有sessionId;但是当用户点击浏览器回退按钮时,回退到home页,此时网址为http://localhost:8889/?sessionId=4724-3551655957868--736132069sh#!/app/home。为了解决回退到home页时网址中,存在session的问题。

我目前的思路是当用户从登录页重定向到home页时,利用history对象的window.history.replaceState({},'','http://localhost:8889/#!/app/home'),改变当前路径的url为http://localhost:8889/#!/app/home,这样当用户从dashboard页点击浏览器回退按钮时,网址中就不再包含session。

但是,问题时,我才用上述操作之后,连跳转到dashboard页,也变为了http://localhost:8889/?sessionId=4724-3551655957868--736132069sh#!/app/dashboard。我很纳闷,为什么在修改了 浏览器历史清单 之后,地址栏没有发生相应的改变。
有知道的同学,麻烦指点下,谢谢!


手掌心
浏览 1967回答 2
2回答

哔哔one

看最后http://localhost:8889/?sessionId=4724-3551655957868--736132069sh#!/app/dashboard这个结果,我估计是跟你用的是hashtag(#)的模式有关,如果你用的是普通的路径http://localhost:8889/app/home估计就没有问题了。你的思路没有错,大概是window.history.replaceState不能这么用,这得查查MDN了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript