Смешанный контент через XMLHttpRequest не заблокирован - PullRequest
5 голосов
/ 28 февраля 2020

Предположим, что страница ниже загружена с https://127.0.100.1. Страница составляет от XMLHttpRequest до http://127.0.100.2. Это выглядит как смешанный контент : страница загружается через защищенное соединение, а ресурс загружается через незащищенное соединение. Смешанный контент должен быть заблокирован браузером. Тем не менее, страница ниже работает просто отлично. * Почему это работает: Почему запрос не заблокирован?

Обновление: выход за рамки принятого ответа , браузеры можно настроить для блокировки смешанного содержимого для таких адресов.

* Wireshark подтверждает, что браузеры не загружают ресурс через безопасное соединение.

<html>
<body>
<img id="dst"/>
<script>
  let xhr = new XMLHttpRequest();
  xhr.open('get', 'http://127.0.100.2/img.jpg');
  xhr.responseType = 'blob';
  xhr.onload = function(){
    document.getElementById('dst').src = URL.createObjectURL(xhr.response);    
  }
  xhr.send();
</script>
</body>
</html>

1 Ответ

5 голосов
/ 02 марта 2020

http://127.0.100.2/img.jpg не считается смешанным контентом, потому что смешанное содержимое spe c определяет его как особый случай априори аутентифицированного URL , поскольку он находится в диапазон 127.0.0.0 - 127.255.255.255 (то есть хост с нотацией CIDR 127.0.0.0/8), который в соответствии со спецификацией безопасного контекста c определяется как безопасный контекст - даже если протокол не https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...