有没有办法更改浏览器's的URL,而不将第一个原始请求重定向到服务器

Is there a way to change the browser's URL without doing a redirect on the first and original request to the server?

本文关键字:第一个 原始 服务器 重定向 请求 URL 浏览器 有没有      更新时间:2023-09-26

当用户登录我的页面时,比如www.somepage.com,我想显示一些随机内容。但我希望这些内容可以作为书签,所以应该在客户端上将URL更改为类似"www.somepage.com/?showparts=2,7,12',其中数字可能不同。

我不想每次用户访问"www.somepage.com"时都进行重定向,从而将用户指向"www.somepage.com/?showparts=2,7,12',因为这将需要与服务器进行2次往返通信,从而使网站对用户来说显得很慢。
那么,有没有办法让用户的浏览器将URL显示为"www.somepage.com/"?当他们导航到"www.somepage.com"时,一个请求和响应中的showparts=1.4,6,30'?

我读过这个帖子:有没有办法改变浏览器';s地址栏而不刷新页面?

但该线程是关于在用户交互之后更改页面的,因此是在页面已经加载到客户端之后。

我的问题是,当客户端第一次导航到网站时,从服务器发送到客户端的第一个响应中是否有响应代码或更改浏览器URL的内容。

我读过历史.js(https://github.com/browserstate/history.js),但我想知道在响应代码中是否有更简单的解决方案。如果唯一的解决方案是使用history.js,我应该怎么做?我想我可以向服务器发送的html页面添加一个javascript调用,如下所示:

History.pushState(null, null, "?showparts=1,4,6,30");

任何建议都将不胜感激。

谢谢,

Keith

我的理解是,您可以使用这里所示的History api来解决您所描述的问题。你试过了吗?你有什么问题?