避免http
或https
页面上出现不安全内容警告的一个好方法是使用"//"引用代码中的所有脚本或资产,该脚本或资产将使用当前页面协议而不是指定的协议。
如果在浏览器URL框中直接输入前面有//
的URL,浏览器是否会选择默认行为?它会/应该默认为http
或https
,还是一组规则来测试和选择其中一个?
网络路径引用(例如//example.com/
)是相对引用。为了解析相对引用,基本URI是必要的。
当在浏览器的地址栏中输入网络路径引用时,前三种方式无法建立这样的基本URI,因此第四种方式5.1.4。默认基本URI,适用于:
如果上述条件均不适用,则基本URI由应用程序的上下文定义。由于此定义必然依赖于应用程序,因此如果无法使用其他方法之一定义基本URI,则可能导致不同类型的应用程序对相同内容进行不同的解释。
换句话说,这取决于每个浏览器。
如果浏览器只支持http
和https
,它可能会选择与用户输入类似"www.example.com"的内容时使用的方案相同的方案,因此可能是http
(请参阅后缀参考)。但许多浏览器支持更多的方案。
例如,在我的系统上,请求//example.com/test
解析为使用file
方案的URI:file:////example.com/test
(Firefox)、file:///example.com/test
(Chromium)。