学习笔记
🗒️[冷知识]浏览器在HTTPS环境下,并不是屏蔽了所有HTTP连接
00 分钟
2024-4-26
2024-6-29
type
status
date
summary
slug
tags
category
password
URL
icon
 

背景

有一个场景,需要前端在HTTPS环境下请求HTTP环境,正常情况下,HTTP请求会被浏览器拦截,并提示
那我们如果确实需要在HTTPS场景下调用HTTP接口,那应该怎么办呢?查询了与混合内容(Mixed Content)有关的w3c规范,发现并不是所有的HTTP请求都会被拦截的,有以下两大类情况我们可以正常的发起HTTP请求。
 

W3C有关混合内容的规定

一、可升级的内容

notion image
简单翻译以下就是针对image、video、audio这三种资源,他们即使是HTTP协议,由于与其他类型的资源相比,它们的危险性更小,所以我们可以认为它们是安全的,浏览器不会阻止这类请求。

二、阻塞的内容

notion image
除了image、video、audio这三种资源外,其他类型的HTTP请求都会被阻塞。但是,W3C还有一种算法策略判断当前URL是否是潜在可信的URL,如果是的话,也可以直接使用HTTP通信。

三、潜在可信的URL判定策略

notion image
中文总结如下:
  1. 如果源是不透明的:如果给定的源是一个不透明源,算法直接返回“不信任”。
  1. 源为元组源时的检查
      • 如果源的协议是“https”或“wss”,返回“潜在信任”。这与“事先认证的URL”概念相对应。
      • 如果源的主机地址符合CIDR表示法127.0.0.0/8或::1/128,返回“潜在信任”。
      • 如果用户代理符合名称解析规则,并且源的主机是“localhost”、以“.localhost”结尾、是“localhost.”或以“.localhost.”结尾,那么返回“潜在信任”。
  1. 特殊协议或配置的处理
      • 如果源的协议是“file”,返回“潜在信任”。
      • 如果源的协议被用户代理视为已认证的协议,返回“潜在信任”。
      • 如果源已被配置为可信的源,返回“潜在信任”。
  1. 默认结果
      • 如果以上条件都不满足,返回“不信任”。
 

总结

在HTTPS环境下,浏览器并不会拦截所有HTTP请求。根据W3C的混合内容规定,对于image、video、audio这三种资源,即使是HTTP协议,由于它们的危险性相对较小,浏览器不会阻止这类请求。除此之外,如果URL被判定为潜在可信的URL,那么也不会被拦截。
 
参考资料:
  1. Mixed Content (w3c.github.io)
  1. Secure Contexts (w3c.github.io)
 
 
💡
有任何问题或者疑问,欢迎发邮件联系。
 
上一篇
大模型API收费标准
下一篇
PlayWright设置页面大小异常