Safari 不断在本地主机上强制使用 HTTPS

Safari keeps forcing HTTPS on localhost

当我在 Safari 中加载 http://localhost:3000 时,Safari 会自动重定向到 https://localhost:3000。我怎样才能禁用此功能?

我进入 ~/Library/Cookies/HSTS.plist 并删除了 localhost 条目,然后重新启动了 Safari,但它只是将其重新添加到该 plist 文件并重定向到 https。

关于如何解决此问题以便在 localhost 上我必须明确说明 http 或 https 的任何想法?

首先让我们确认一下为什么要使用 HTTPS。

在 Developer Tools 中是否显示 301 或 302 重定向?

如果是这样,那是您的 Web 服务器要求转至 HTTPS。修复您的 Web 服务器配置。

还是表示HSTS的307重定向?

老实说,我不确定 Safari 是否将其显示为 307(代表 HSTS 的虚假内部重定向),因此它可能只是去那里而不显示它,但 Chrome 确实显示了它.

如果是这样,那么删除该文件并重新启动应该可以解决这个问题。但是,您能否确认 HTTPS 站点是否返回 strict-transport-security HTTP Header?如果是这样,那么它只会在您下次碰巧转到 HTTPS 时设置(包括您的页面是否通过 HTTPS 加载和图像)。你能删除那个 header 吗?或者更好的是,使用 max-age 0 发布它,这样它就可以将它从 HSTS 浏览器缓存中删除,而不必弄清楚它在哪个文件中,或者 Safari 是否已将它从 ~/Library/Cookies/HSTS.plist

我能够根据 answer from Ask Different.

解决这个问题

简而言之,关闭 Safari,然后 运行 下面的命令有效。

sudo killall nsurlstoraged
rm -f ~/Library/Cookies/HSTS.plist
launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

在 运行 之后重新启动 Safari 并尝试转到 http://localhost:3000 解决了问题并且没有重定向到 https

希望这有助于解决此问题。

在 Safari 13.0.5 中,删除 localhost 的网站数据(Safari > 首选项 > 隐私 > 管理网站数据...)解决了问题。

可以改用 http://127.0.0.1:3000。或者您的本地计算机名称。 例如:http://andis-mac-5.local:3000.

您可以通过系统偏好设置 - 共享 - 编辑确定本地计算机名称:

你可以试试

deleting website data for localhost (Safari > Preferences > Privacy > Manage Website Data...)

之后关闭浏览器并尝试。

如果不能,您可以尝试在为本地主机返回 80 端口后创建不同的 80 端口

在没有运气的情况下跟随 Charlie 的修复后,对我有用的是 运行 私有 window。重新启动后,私人和 public 选项卡上的一切似乎都很好。

如果设置了内容安全策略“upgrade-insecure-requests”,也会发生这种情况。这里有一个未解决的问题:https://github.com/github/secure_headers/issues/348