我知道当初始 HTML 通过安全的 HTTPS 连接加载时会发生混合内容,但其他资源(例如图像、视频、样式表、脚本)是通过不安全的 HTTP 连接加载的。这称为混合内容,因为加载 HTTP 和 HTTPS 内容以显示同一页面,并且初始请求通过 HTTPS 是安全的。
是否允许安全页面包含指向不安全的外部页面的链接?我正在谈论将用户从安全页面导航到新的但不安全的页面的链接。没有在安全页面上检索内容,所以这没关系,对吧?
我知道当初始 HTML 通过安全的 HTTPS 连接加载时会发生混合内容,但其他资源(例如图像、视频、样式表、脚本)是通过不安全的 HTTP 连接加载的。这称为混合内容,因为加载 HTTP 和 HTTPS 内容以显示同一页面,并且初始请求通过 HTTPS 是安全的。
是否允许安全页面包含指向不安全的外部页面的链接?我正在谈论将用户从安全页面导航到新的但不安全的页面的链接。没有在安全页面上检索内容,所以这没关系,对吧?
是的,根据混合内容规范,该规范定义了浏览器对潜在混合内容的规范要求,允许安全页面包含指向不安全的外部页面的链接。
具体的相关要求在“<em>抓取请求是否应该作为混合内容被阻止?”</a> 部分的规范,内容如下:
给定一个请求请求,用户代理通过以下算法确定请求 请求是否应该继续:
如果满足以下一项或多项条件,则允许退货:
- §5.1 设置是否禁止混合安全上下文?
Does Not Restrict Mixed Security Contexts
应用于 request的客户端时返回“ ” 。- request的url是经过先验认证的。
- 用户代理已被指示允许混合内容,如 §7.4 用户控制中所述)。
- request的目的地是 "
document
",并且request的目标浏览上下文没有父浏览上下文。注意:我们从混合内容检查中排除顶级导航,但用户代理可以选择对不安全的表单提交强制执行混合内容检查(参见 §7.5 进一步操作)。
换句话说,当用户点击指向外部页面的链接时,该操作会启动顶级导航请求,并且按照上面的第 4 步,算法会针对该情况返回allowed,这意味着该请求是允许的。(在规范定义为混合内容的情况下,算法改为返回阻塞,这意味着请求是不允许的。)
或者用不那么规范但信息量更大的术语来说,浏览器会阻止对任何页面的嵌入式子资源的请求,这些子资源不是从安全上下文中提供的,但它们不会阻止导航到其他不安全的文档。
混合内容规范的相关部分隐含地说明了这些术语中的行为,在简介中:
...当加密和经过身份验证的资源通过不安全的通道请求子资源(脚本、图像等)时...这些资源请求导致资源状态混合