无法访问网站时,如何导出Chrome localStorage数据并迁移?
嘿,我之前也遇到过一模一样的问题!Chrome强制.dev走HTTPS确实坑了不少本地开发的人,给你两个靠谱的解决方案,不用纠结没法访问旧站点的问题:
方案一:临时解除HSTS限制,直接访问旧站点导出
这个方法最简单,快速绕过Chrome的强制重定向:
- 打开Chrome,在地址栏输入
chrome://net-internals/#hsts并回车 - 页面往下滚动,找到「Delete domain security policies」区域
- 在输入框里准确输入
foo.dev,点击「Delete」按钮 - 现在你就能正常访问
http://foo.dev了!打开DevTools(按F12),切换到「Application」面板 - 左侧导航展开「LocalStorage」,选中
http://foo.dev,右键选择「Export as JSON」(或者直接在控制台输入JSON.stringify(localStorage),复制输出的字符串) - 访问新站点
http://foo.local,同样打开DevTools控制台,把刚才复制的字符串粘贴进去,用这段代码导入:
(记得把Object.entries(JSON.parse('你复制的JSON字符串')).forEach(([key, value]) => localStorage.setItem(key, value))'你复制的JSON字符串'替换成实际内容)
方案二:直接操作Chrome的本地存储文件
如果不想临时修改HSTS策略,可以直接从Chrome的用户数据里提取旧站点的localStorage:
- 必须完全关闭Chrome,包括后台运行的所有进程(Windows可以打开任务管理器结束
chrome.exe,Mac用活动监视器终止Chrome进程) - 根据你的系统找到Chrome的Local Storage目录:
- Windows:
C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data\Default\Local Storage - Mac:
~/Library/Application Support/Google/Chrome/Default/Local Storage - Linux:
~/.config/google-chrome/Default/Local Storage
- Windows:
- 在目录里找到文件名类似
http_foo.dev_0.localstorage和http_foo.dev_0.localstorage-journal的文件(journal是日志文件,可选) - 下载一个SQLite浏览器(比如DB Browser for SQLite),打开
http_foo.dev_0.localstorage文件 - 找到
ItemTable表,这里面就是旧站点的所有localStorage键值对,你可以导出为JSON格式 - 先访问一次
http://foo.local,让Chrome生成新站点的存储文件(文件名应该是http_foo.local_0.localstorage) - 用SQLite浏览器打开新的存储文件,把导出的键值对插入到
ItemTable中,保存修改 - 重新打开Chrome,访问
http://foo.local就能看到导入的数据了
小提醒
- 操作存储文件时一定要确保Chrome完全关闭,不然文件会被锁定无法修改
- 之后建议一直用
.local作为本地开发域名,避免再碰到HSTS强制重定向的问题
内容的提问来源于stack exchange,提问作者OlivierLarue




