面试问题:hash和history的区别

问:

hash和history的区别

回答:

  1. ‌工作原理‌:

    • ‌hash模式 ‌:利用锚点技术,通过改变URL中的hash部分(即#后面的部分)来实现页面跳转,不会重新加载页面。例如,URL变为http://www.example.com/#/home时,hash值为#/home。这种模式下,hash值虽然出现在URL中,但不会被包含在HTTP请求中,因此不会对后端产生影响。‌12
    • ‌history模式 ‌:利用HTML5 History API中的pushState()和replaceState()方法,通过修改浏览器的历史记录来实现页面跳转。这种模式下,URL看起来更美观,没有#符号。例如,URL可以变为http://www.example.com/home。如果浏览器不支持这些方法,则无法使用history模式。
  2. ‌刷新页面时的行为‌:

    • ‌hash模式 ‌:在hash模式下,刷新页面时,浏览器会保留当前的hash值,因此不会返回404错误。例如,即使URL变为http://www.example.com/#/home,浏览器也会正常显示页面内容。
    • ‌history模式 ‌:在history模式下,刷新页面时会向服务器发送请求,如果服务器没有对应的路由处理,则会返回404错误。例如,如果URL变为http://www.example.com/home,而服务器没有对应的路由处理,则会返回404错误。
  3. ‌兼容性‌:

    • ‌hash模式‌:兼容性较好,几乎所有浏览器都支持锚点技术,不需要服务器特别配置。
    • ‌history模式‌:需要HTML5支持的浏览器,不支持IE6-8等老版本浏览器。
  4. ‌使用场景‌:

    • ‌hash模式‌:适合对兼容性要求较高的项目,或者开发测试阶段使用。‌2
    • ‌history模式‌:适合对URL美观度有要求的项目,需要与后端配合,确保所有路由都有对应的处理。
相关推荐
Interview Aid1126 小时前
Snowflake OA 面试真题:前缀和、BFS 与动态规划
面试·动态规划·宽度优先
学顶教育7 小时前
学顶教育:公务员面试常见问题!
面试·职场和发展
库玛西9 小时前
计算机网络第三章:数据链路层
服务器·网络·计算机网络·考研·算法·面试
专业程序开发源11 小时前
springboot校企合作双选会一站式预约与面试系统16010-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·面试·php·课程设计
人才风控观察周刊11 小时前
教育机构人员背调方案的方案能力证据、版本与复审周期是否透明可
职场和发展
白露与泡影13 小时前
Java 面试八股文及答案整理 | 后端面试高频题(2026)
java·开发语言·面试
小陈从不会敲代码13 小时前
JavaEE面试复习(多线程-初阶)
java·面试·java-ee
Rain的Java大神之路14 小时前
别再上来就堆 Redis!点赞系统从打挂数据库到 18w 写峰值,我把这套方案讲透了
java·后端·面试
clz131452115 小时前
ruoyi-cloud功能开发demo实战:三级联动 Redis Hash 缓存查看器
redis·缓存·哈希算法