Safari将HTTP重定向到(不存在)https


34

Safari强制重定向到我以前通过https访问的网站的https版本。

但是,https站点不再起作用,并且无法阻止Safari表单尝试加载它。

HTTP重定向到HTTPS

这是一个与Apple论坛相关的问题,Safari不断将http重定向到https


过去是否有可能启用过HSTS?
Max Ried 2015年

@MaxRied听起来像是个好建议,我无从得知。供参考:en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
rjstelling 2015年

Answers:


19

如果该站点先前已向Safari指示希望一直通过HSTS(HTTP Strict Transport Security)通过HTTPS访问该站点,则Safari将始终尝试重定向到HTTPS。

您可以通过删除清除HSTS缓存~/Library/Cookies/HSTS.plist

请注意,Safari也会确实缓存301重定向一段时间,因此也可能需要清除正常的Safari缓存:从Develop菜单(在Preferences→Advanced中启用),选择Empty Caches。


我应该开始写答案了……
Max Ried

10
@grgarside我尝试了多次,它不再起作用了
kushdilip

“清除普通的Safari缓存”-到底是怎么回事?
通配符

@Wildcard我已使用该信息编辑了答案
grg

8

自2017年12月以来,Google已将“ .dev” TLD添加到Chrome的预加载HSTS列表中!

Safari使用相同的列表。因此,Safari始终会将* .dev添加到HSTS列表中...

似乎许多开发人员都需要将.dev后缀更改为另一个:(

请参阅:Chrome通过预加载的HSTS将.dev域强制为HTTPS


1
这激怒了我。任何TLD都不应该是完全拥有的。有一些很棒的东西叫做VPN或Intranet,它们是合适的。(请注意,我的怒气是针对Google,而不是答案):)。
沃尔特

8

现在,HSTS策略已包含在Safari的存储的网站数据中,您可以删除localhost数据来解决此问题。

  1. command + ,
  2. 隐私 -> 管理网站数据 ...
  3. 搜索本地主机
  4. 点击删除

在地址栏中更改https://localhosthttp://localhost,然后单击返回键。


这不仅适用于localhost,而且适用于任何域。请注意,要访问子域,您必须删除父域的data。即,如果您要访问http://some.subdomain.somehost.com并重定向到https,则必须somehost.comManage Website Data该页面上进行搜索并将其删除。
voiger

5

我还没有找到任何有效的解决方案,但是要解决此问题,请使用127.0.0.1而不是localhost

http://localhost/

http://127.0.0.1/

1

当您使用客户端证书访问localhost时,似乎Safari进入了这种疯狂行为。以我为例,我处理的项目之一需要此客户端设置,这完全破坏了无法在localhost上使用http的项目的开发。我发现的唯一解决方法是编辑/etc/hosts并为localhost添加别名,如下所示

127.0.0.1 localhost

然后使用,我可以使用http:// localhost:3000访问端口3000上的项目,而无需Safari强制https连接。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.