Localhost HTTP, доступ к которому осуществляется с веб-страницы HTTPS. Почему нет ошибки Mixed Content?

Делаю HTTP-запрос:

  • из HTTPS JSFiddle: fetch('http://localhost:8090').then(...)
  • на HTTP-локальный хост или 127.0.0.1

И это работает.

Нет ошибок смешанного содержимого в Chrome (v89.0.4389.90) и Firefox (v86.0.1). Только Safari блокирует запрос. Однако запросы к 192.168.1.x вызывают ошибки смешанного содержимого.

Явно ли localhost занесен в белый список в Chrome и Firefox? Или поставщики браузеров также планируют блокировать смешанный контент в какой-то момент?

Можно ли на это положиться, например, для управления локальным приложением, привязанным к локальному хосту, который обслуживает HTTP API?


person Andrey Moiseev    schedule 18.03.2021    source источник


Ответы (1)


Из MDN

Браузеры могут разрешить загрузку локально доставленных смешанных ресурсов. Сюда входят файлы: URL-адреса и содержимое, доступ к которым осуществляется с адресов обратной связи (например, http://127.0.0.1/).

  • Firefox 55 и более поздние версии позволяют загружать смешанный контент на петлевой адрес http://127.0.0.1/ (см. ошибку 903966). ),
  • Firefox 84 и более поздние версии позволяют загружать смешанный контент по URL-адресам http://localhost/ и http://*.localhost/, так как они теперь сопоставлены с петлевыми адресами (см. ошибку 1220810).
  • Chrome также допускает смешанный контент на http://127.0.0.1/ и http://localhost/.
  • Safari не допускает смешанный контент.

И 127.0.0.1, и localhost считаются потенциально заслуживающими доверия, поэтому браузер может принять решение о результате.

https://w3c.github.io/webappsec-secure-contexts/#potentially-trustworthy-origin

Поведение Safari выглядит как ошибка и может измениться в будущем. См. обсуждение здесь Не рассматривать петлевые адреса как смешанный контент

person lastr2d2    schedule 18.03.2021