macOS Monterey Safari15.1访问SvelteKit本地HTTP服务自动跳HTTPS报错
问题根因
该问题由Safari 15+的HSTS缓存+自动HTTPS升级特性导致:你之前使用过HTTPS模式启动本地开发服务,Safari会将localhost标记为需要强制走HTTPS访问,所有http://localhost的请求会被自动重定向到https://localhost,而你当前未开启HTTPS的开发服务无法响应HTTPS请求,因此抛出SSL连接错误。该问题和SvelteKit框架本身无关,不需要重复清除项目缓存。
可用解决方案
方案1:绕开localhost访问(最简单无侵入)
启动SvelteKit开发服务时指定绑定127.0.0.1,执行命令:npm run dev --host 127.0.0.1之后直接访问http://127.0.0.1:3000即可,不会触发localhost的HSTS规则。
方案2:关闭Safari的自动HTTPS升级功能
- 打开Safari偏好设置,切换到「高级」选项卡,勾选底部「在菜单栏中显示开发菜单」
- 点击顶部菜单栏的「开发」-「实验性功能」,取消勾选「自动HTTPS升级(Automatic HTTPS Upgrade)」
- 重启Safari后重新访问http://localhost:3000即可。
方案3:彻底清除localhost的HSTS缓存
Monterey系统下Safari的HSTS缓存有独立沙盒存储路径,旧的全局删除命令不生效,执行以下操作即可:- 完全关闭Safari,终端依次执行命令:
sudo killall nsurlstoraged sudo rm -rf ~/Library/Containers/com.apple.Safari/Data/Library/Cookies/HSTS.plist sudo rm -rf ~/Library/Cookies/HSTS.plist launchctl kickstart -k gui/$(id -u)/com.apple.nsurlstoraged- 重启设备后重新访问http://localhost:3000即可。
内容的提问来源于stack exchange,提问作者nstuyvesant
相关产品推荐
相关产品推荐

