从 HTTPS 页面到 HTTP(非 HTTPS)本地主机地址的混合内容请求未被阻止
Mixed-content request from HTTPS page to HTTP (non-HTTPS) localhost address not blocked
假设下面的页面是从 https://127.0.100.1
加载的。该页面使 XMLHttpRequest
到 http://127.0.100.2
。这看起来像 mixed content:页面通过安全连接加载,资源通过不安全连接加载。浏览器应阻止混合内容。然而,下面的页面工作得很好。*为什么会工作:为什么请求没有被阻止?
更新:超越 , browsers 以阻止此类地址的混合内容。
* 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>
http://127.0.100.2/img.jpg
不被视为混合内容,因为混合内容规范将其定义为 a priori authenticated URL, due to it being in the range 127.0.0.0 - 127.255.255.255 (that is, a host with the CIDR notation 127.0.0.0/8), which per the Secure Contexts spec 的特例,被定义为安全上下文——即使协议不是 https。
http://localhost/img.jpg
或http://foo.localhost/img.jpg
也是如此
假设下面的页面是从 https://127.0.100.1
加载的。该页面使 XMLHttpRequest
到 http://127.0.100.2
。这看起来像 mixed content:页面通过安全连接加载,资源通过不安全连接加载。浏览器应阻止混合内容。然而,下面的页面工作得很好。*为什么会工作:为什么请求没有被阻止?
更新:超越
* 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>
http://127.0.100.2/img.jpg
不被视为混合内容,因为混合内容规范将其定义为 a priori authenticated URL, due to it being in the range 127.0.0.0 - 127.255.255.255 (that is, a host with the CIDR notation 127.0.0.0/8), which per the Secure Contexts spec 的特例,被定义为安全上下文——即使协议不是 https。
http://localhost/img.jpg
或http://foo.localhost/img.jpg