javascript-React Router中的hashHistory和browserHistory有什么区别?

我已经用谷歌搜索了很多,但是我没有找到以下问题的明确答案:react-router中的hashHistory和browserHistory有什么区别?

Ben Bieler asked 2020-08-05T14:24:27Z
4个解决方案
46 votes

基本区别在于hashHistory使用的网址类似:[http://myurl.com/#page/another_page/another_page]

使用BrowserHistory可以获得正常的网址(无哈希):[http://myurl.com/page/another_page/another_page]

smcdrc answered 2020-08-05T14:24:37Z
3 votes

我认为问题不是在要求格式上的差异,而是技术上的差异。 因此,此处在技术上有所区别地分享了此答案:[https://stackoverflow.com/a/42157741/2445694]

基本上,浏览器不会在#之后发送网址

因此,假设某个网站限制了成员和管理员的区域。 用户导航到/ member,并被提示登录。但是,在进入登录页面之前,服务器将不知道该用户是否在尝试访问/ admin或/ member,因此在登录服务器后,该用户不会 知道重定向到哪里。

luanped answered 2020-08-05T14:25:07Z
2 votes

第一个区别:

他们正在使用不同的WEB API。<HashRouter>使用并从URL读取哈希,<HashRouter>使用<BrowserRouter> WEB API。

第二点区别:

<HashRouter>用于静态的一页网站。 基于浏览器的项目的理想选择。<BrowserRouter>用于动态网站。 当您拥有将处理动态请求的服务器(知道如何响应任何可能的URL)时,应使用此命令。

Bojan Golubovic answered 2020-08-05T14:25:40Z
1 votes

1)浏览器历史记录的位置数组不仅仅包含在我们的应用程序中访问过的位置。 允许访问此列表将泄漏有关不应允许网站访问的用户浏览历史的信息。

2)浏览器历史记录会创建位置对象,其路径名是URL的完整路径名。 但是,您可以为历史记录指定基本名称,在这种情况下,完整路径名的一部分将被有效地忽略。

3)静态文件服务器中的浏览器历史记录将在我们的服务器上具有一个实际位置,以从中获取HTML,而哈希历史记录则使用URL的哈希部分来设置和读取位置。

4)哈希历史记录是依赖的,因为它将所有路径信息存储在URL的哈希表中。

MERLIN THOMAS answered 2020-08-05T14:26:14Z
translate from https://stackoverflow.com:/questions/36289683/what-is-the-difference-between-hashhistory-and-browserhistory-in-react-router