浏览器隐私模式与正常模式的区别
这是一个很实用的前端面试&开发问题。**浏览器隐私模式(又称无痕/隐身模式)**与正常模式有以下主要差异:
1. 本地存储行为差异
- Cookie
隐私模式下创建的 Cookie 只在当前会话有效,关闭窗口后自动清除,不会写入磁盘。 - localStorage / sessionStorage
- localStorage:在隐私模式下存储的数据仅在当前隐私窗口可用,窗口关闭即清除,不会持久化到本地磁盘。
- sessionStorage:和正常模式一样,只在当前标签页有效,但隐私模式下关闭窗口会全部清空。
- IndexedDB / WebSQL
隐私模式下的数据库仅在会话内有效,窗口关闭即清除。
2. 缓存机制
- 页面缓存、资源缓存、Service Worker 缓存
隐私模式下缓存行为更严格,很多资源不会被持久化缓存,Service Worker 通常不可用或只在会话内有效。
3. 历史记录
- 浏览历史
隐私模式下访问的网页不会被记录到浏览器的历史记录中。
4. 下载记录
- 下载行为
文件下载后会保存在本地,但下载记录不会被保存在浏览器的下载历史里。
5. 自动填充/表单数据
- 表单自动填充、密码保存
隐私模式下不会保存表单自动填充数据,也不会弹出“是否保存密码”的提示。
6. 插件/扩展行为
- 某些浏览器插件/扩展在隐私模式下默认不启用,需手动授权才可用。
7. 第三方追踪限制
- 隐私模式下,部分浏览器会加强第三方 Cookie、追踪脚本的屏蔽,减少广告跟踪。
8. 指纹识别/隔离
- 有些浏览器(如 Firefox)会在隐私模式下启用更强的防指纹追踪措施。
9. 窗口隔离
- 隐私模式的窗口与正常模式、其他隐私窗口相互隔离,数据不可共享。
10. 登录状态与账户信息
- 隐私模式下登录网站,关闭窗口后登录状态会丢失,下次打开需要重新登录。
11. 检测隐私模式
- 前端可以通过某些特性(如 localStorage、IndexedDB 的报错、window.openDatabase 等)检测用户是否处于隐私模式,但不同浏览器表现和兼容性不同。
总结表
特性/存储方式 | 正常模式 | 隐私模式 |
---|---|---|
Cookie | 持久化 | 会话内,关闭即清 |
localStorage | 持久化 | 会话内,关闭即清 |
sessionStorage | 标签页内 | 标签页内 |
IndexedDB/WebSQL | 持久化 | 会话内,关闭即清 |
浏览历史 | 记录 | 不记录 |
下载历史 | 记录 | 不记录 |
自动填充/密码保存 | 可用 | 不可用 |
插件扩展 | 默认可用 | 需授权 |
追踪/指纹保护 | 普通 | 更强防护 |
登录状态 | 可持久 | 会话内 |