Safari перенаправляет http на (несуществующий) https

Safari принудительно перенаправляет на https-версию сайта, который я ранее посещал через https.

Однако сайт https больше не работает, и нет способа предотвратить попытку Safari загрузить его.

HTTP перенаправляет на HTTPS

Вот связанный с этим вопрос на форумах Apple, Safari продолжает перенаправлять http на https

Ответы (6)

Если сайт ранее указывал Safari, что он хочет всегда получать доступ по HTTPS через HSTS ( HTTP Strict Transport Security ), то Safari всегда будет пытаться перенаправить на HTTPS.

Вы можете очистить кеш HSTS, удалив файлы ~/Library/Cookies/HSTS.plist.

Обратите внимание, что Safari также некоторое время кэширует 301 переадресацию, поэтому может потребоваться очистка обычного кеша Safari: в меню «Разработка» (включить в «Настройки» → «Дополнительно») выберите «Очистить кэши».

#На 2020 год...

В текущей MacOS вы должны

  1. Очистите кеш в Сафари. (Меню разработчика.) Затем сразу:
  2. Закройте Safari и любые другие приложения, которые могут использовать сеть (закройте все приложения).
  3. Откройте /Users/ your user name /Library/Cookies, что будет выглядеть так:

введите описание изображения здесь

  1. Выбросить HSTS.plistв корзину, потом сразу перезагрузить весь Mac.

В крайних случаях отключите всю пропускную способность для Mac перед шагами 1-2-3-4.

В текущей MacOS список HSTS немедленно перестраивается, если файл выбрасывается, если происходит какое-либо сетевое взаимодействие. Следовательно, Mac нуждается в немедленной перезагрузке, чтобы корзина заработала.

Еще кое-что. Чтобы выйти из https для определенного домена, мне пришлось отключить его в Limit IP Address Trackingразделе «Системные настройки»> «Сеть». Я также отключил Hide IP addressна вкладке «Конфиденциальность» настроек Safari.

Политика HSTS теперь включена в сохраненные данные веб-сайта Safari, и вы можете удалить данные локального хоста, чтобы решить эту проблему.

  1. command + ,
  2. Конфиденциальность -> Управление данными веб-сайта ...
  3. Поиск на локальном хосте
  4. Нажмите Удалить

Измените https://localhostна http://localhostв адресной строке и нажмите клавишу возврата.

Это касается не только localhost, а любых доменов. Обратите внимание, что для доступа к поддомену необходимо удалить данные родительского домена . То есть, если вы хотите получить доступ http://some.subdomain.somehost.comи перенаправиться на https, вам нужно найти somehost.comна Manage Website Dataстранице и удалить ее.

С декабря 2017 года Google добавил TLD «.dev» в предварительно загруженный список HSTS для Chrome!

Safari использует тот же список. Таким образом, Safari всегда будет добавлять *.dev в список HSTS...

Похоже, многим разработчикам придется изменить суффикс .dev на другой :(

См.: Chrome принудительно переводит домены .dev на HTTPS через предварительно загруженный HSTS.

Я не нашел рабочего решения, но для обходного пути используйте 127.0.0.1 вместо localhost.

http://localhost/

http://127.0.0.1/

Кажется, что Safari вступает в это безумное поведение, когда вы обращаетесь к локальному хосту, используя сертификат на стороне клиента. В моем случае один из проектов, с которыми я работаю, нуждается в этой настройке на стороне клиента, и это полностью мешает разработке проектов, в которых я не могу использовать http на локальном хосте. Единственный обходной путь, который я нашел, - отредактировать /etc/hostsи добавить псевдоним для локального хоста, например

127.0.0.1 localhost

Затем используйте Я могу использовать http://localhost:3000 для доступа к моему проекту через порт 3000 без принудительного подключения Safari к https.

Я также столкнулся с проблемой «Кэш Safari HSTS».

Я попробовал решение rm ~/Library/Cookies/HSTS.plist, но оно не работает.

Но следующие шаги полезны:

  1. Выйти из сафари
  2. rm -f ~/Library/Cookies/HSTS.plist, удалить файл кэша HSTS
  3. killall nsurlstoraged, чтобы остановить диспетчер хранилища HTTP (поскольку он имеет кэш-память хостов HSTS)

Самое главное, что служба nsurlstoraged имеет в памяти HSTS-кэш, необходимо перезагрузить эту службу.