Safari一直在本地主机上强制使用HTTPS

Safari一直在本地主机上强制使用HTTPS,http,https,safari,hsts,Http,Https,Safari,Hsts,当我加载http://localhost:3000在Safari中,Safari会自动重定向到https://localhost:3000。如何禁用此功能 我进入~/Library/Cookies/HSTS.plist删除了localhost条目,然后重新启动了Safari,但它只是将其重新添加到plist文件并重定向到https 有没有办法解决这个问题,以便在localhost上我必须明确地说http或https?首先,让我们确认一下为什么要使用https 在开发者工具中,它是显示301还是3

当我加载
http://localhost:3000
在Safari中,Safari会自动重定向到
https://localhost:3000
。如何禁用此功能

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


有没有办法解决这个问题,以便在
localhost
上我必须明确地说http或https?

首先,让我们确认一下为什么要使用https

在开发者工具中,它是显示301还是302重定向?

如果是这样的话,您的web服务器会告诉您转到HTTPS。修复您的web服务器配置

还是307重定向指示HSTS?

老实说,我不确定Safari是否将其显示为307(表示HST的虚假内部重定向),因此它可能只是在没有显示的情况下显示出来,但Chrome确实显示了这一点


如果是这样,那么删除该文件并重新启动应该可以解决这个问题。但是,您能否确认HTTPS站点是否返回严格的传输安全HTTP头?如果是这样的话,下次您碰巧转到HTTPS时(包括您的页面是否通过HTTPS加载和图像),它只会设置这个值。你能把那个头去掉吗?或者更好的方法是,以0的最大年龄发布它,这样它就可以从HSTS浏览器缓存中删除它,而不必知道它在哪个文件中,或者Safari是否已将它从~/Library/Cookies/HSTS中移动。plist

我能够基于

简言之,关闭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中,删除
本地主机的网站数据(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 Fish!还要注意:如果启用了系统完整性保护,则无法删除HSTS.plist。在这种情况下,您需要在运行这些命令之前执行以下操作。确保在完成后再次启用它
rm-f~/Library/Cookies/HSTS.plist因
操作不允许而失败
错误。但是我可以在Finder中删除文件,可以执行第一行和第三行
rm-f~/Library/Cookies/HSTS.plist对我来说也失败了,即使是
sudo
。重新打开Safari时,https仍然是强制的,我无法在本地开发。我正在运行Mac OS 10.15.6和safari 13.1.2。这对我来说部分有效,我可以访问
http:localhost
,但它尝试使用https获取
.js
.css
文件。表示“加载资源失败:发生SSL错误,无法与服务器建立安全连接”。其他人有此问题吗?我在两台不同的Mac上尝试过,一台是Catalina,一台是Mojave,这两台都不适用@charlie fish的回答对我来说很有用。在我的设置中没有localhost的条目为什么downvote?对我来说,不使用Safari的
localhost
解决了这个问题。我认为这是一个很好的提示,对于那些希望有一个简单的解决方法并且不坚持使用
localhost
URL的人来说。这对我也不起作用。它仍然试图升级被引用样式表的连接,等等@tgf,可能您的样式表是用绝对URL引用的。尝试使用相对URL:
。在
href
-属性中省略服务器名称。一旦你将网站部署到服务器上,情况就不同了。你被否决了,因为你不能简单地交换域名,因为它很方便。@CochiseRuhulessin,
localhost
不是域名。这是您的机器在开发过程中的临时名称。所以无论如何,它必须被改变用于生产用途。。。同时,
localhost
也在Safari为我工作。也许他们在最近的Safari更新中改变了什么?