javascript - 从 HTTPS 页面到 HTTP(非 HTTPS)本地主机地址的混合内容请求未被阻止
问题描述
假设下面的页面是从 加载的https://127.0.100.1
。该页面生成一个XMLHttpRequest
to 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>
解决方案
http://127.0.100.2/img.jpg
不被视为混合内容,因为混合内容规范将其定义为先验身份验证 URL的特例,因为它位于 127.0.0.0 - 127.255.255.255 范围内(即具有 CIDR 表示法 127.0.0 的主机)。 0.0/8),根据安全上下文规范,它被定义为安全上下文——即使协议不是 https。
同样适用于http://localhost/img.jpg
或http://foo.localhost/img.jpg
推荐阅读
- pyenv - 为什么 pyenv virtualenv 不将 `~.pyenv/plugins/pyenv-virtualenv/shims` 添加到我的路径中?
- sql - 如何扩大 Postgres 查询的范围
- javascript - 如何在 JavaScript 中提醒汽车获胜者并重置图像
- reactjs - 未找到 Nextjs 模块:包路径 Swiper scss
- makefile - 获取规则名称中文件的基本名称
- postgresql - 多对一和一对多关系保存 null
- javascript - 赛普拉斯测试运行程序卡在新网址上
- javascript - 正则表达式:使用多个lookbehinds来格式化JSON块
- image - Webp 格式构建时的 Next.js 图像优化
- java - 当我输入永远启动 app.jar 时,永远 npm 不起作用