繁体   English   中英

未阻止从 HTTPS 页面到 HTTP(非 HTTPS)本地主机地址的混合内容请求

[英]Mixed-content request from HTTPS page to HTTP (non-HTTPS) localhost address not blocked

假设下面的页面是从https://127.0.100.1加载的。 该页面向http://127.0.100.2发出XMLHttpRequest 这似乎是混合内容:页面通过安全连接加载,资源通过不安全连接加载。 浏览器应阻止混合内容。 然而,下面的页面工作正常。* 为什么工作:为什么请求没有被阻止?

更新:除了已接受的答案之外还可以将浏览器配置为阻止此类地址的混合内容。

* 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不被视为混合内容,因为混合内容规范将其定义为先验认证 URL的特例,因为它在 127.0.0.0 - 127.255.255.255 (也就是说,具有 CIDR 符号 127.0.0.0/8)的主机, 根据 Secure Contexts 规范被定义为安全上下文——即使协议不是 https。

同样适用于http://localhost/img.jpghttp://foo.localhost/img.jpg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM