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
当我在 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