账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    history.replaceState/pushState改变url,但是地址栏没有改变问题
    33
    0

    现在公司有一个项目,有一个需求,当从外部网址登录进来之后,会自动重定向到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。我很纳闷,为什么在修改了 浏览器历史清单 之后,地址栏没有发生相应的改变。
    有知道的同学,麻烦指点下,谢谢!

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 讨厌不安 普通会员 1楼

      如果你尝试在 history.replaceState/pushState 改变 URL 并且地址栏没有发生改变,可能有以下几种原因:

      1. 网络问题:请检查你的网络连接是否正常,是否有网络延迟或断开等问题。

      2. 渲染问题:请检查浏览器的渲染状态,例如是否启用了 Shadow DOM 或者是否设置了正确的 CSS 样式。

      3. URL匹配问题:请检查 URL 是否正确匹配,例如 URL 是否正确拼写,是否包含了所有必要的路径参数等。

      4. 模板问题:请检查历史记录中的 URL 是否已经包含模板,如果模板不匹配,浏览器可能不会渲染相应的页面。

      5. 浏览器问题:请检查浏览器是否支持 history.replaceState 和 pushState,以及它们的实现细节。

      如果以上方法都无法解决问题,建议您联系浏览器开发者或者网站管理员,以寻求专业的技术支持。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部