32

Safari forces a redirect to the https version of a site I previously visited via https.

However, the https site no longer works and there is no way to prevent Safari form trying to load it.

HTTP redirects to HTTPS

Here is a related Apple Forums question, Safari keeps redirecting http to https

18

If the site has previously indicated to Safari that it wishes to always be accessed over HTTPS through HSTS (HTTP Strict Transport Security), then Safari will always try to redirect to HTTPS.

You can clear the HSTS cache by deleting ~/Library/Cookies/HSTS.plist.

Note that Safari does also cache 301 redirects for a while and thus clearing the normal Safari cache may also be necessary: from the Develop menu (enable in Preferences → Advanced), choose Empty Caches.

  • I should start writing answers... – Max Ried Nov 12 '15 at 5:46
  • 9
    @grgarside I tried this multiple times, it's not working anymore – kushdilip Nov 7 '16 at 11:43
  • "Clearing the normal Safari cache" — how, exactly?? – Wildcard Apr 11 '17 at 20:41
  • @Wildcard I've edited my answer with that information – grg Oct 19 '17 at 17:06
8

Since December 2017, Google has added ".dev" TLD to the preloaded HSTS list for Chrome!

Safari uses the same list. So Safari will always add *.dev to HSTS list...

Seems many developers will need to change .dev suffix to another one :(

See: Chrome to force .dev domains to HTTPS via preloaded HSTS

  • 1
    This incites my rage. No TLD should be wholly ownable. There are wonderful things called VPNs or Intranets that would be appropriate. (P.S. my rage is directed at Google, not the answer) :). – Volte Feb 20 '18 at 20:48
5

I haven't found any working solution but for a workaround use 127.0.0.1 instead of localhost

http://localhost/

http://127.0.0.1/
5

HSTS Policy is now included in Safari's stored website data, and you can remove localhost data to clear this issue.

  1. command + ,
  2. Privacy -> Manage Website Data...
  3. Search localhost
  4. Click Remove

Change https://localhost to http://localhost in your address bar and click return key.

1

It seems Safari enters into this mad behaviour when you have accessed localhost using a client side certificate. In my case, one of the projects I work with needs this client side setup and it totally wrecks development for the projects where I can't use http on localhost. The only workaround I have found is to edit /etc/hosts and add an alias for localhost, like so

127.0.0.1 localhost

Then use I can use http://localhost:3000 to access my project on port 3000 without Safari forcing a https connection.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .