未从现有页面链接时,以“//”开头的URL的预期行为是什么?
问题描述:
避免页面上不安全的内容警告的好方法是http
或https
,它是使用“//”引用代码中的所有脚本或资产,该代码将使用当前页面协议而不是指定的页面协议。未从现有页面链接时,以“//”开头的URL的预期行为是什么?
如果在前面直接输入一个带有//
的URL直接到浏览器的URL框中,浏览器会选择默认行为吗?会/应该默认为http
或https
,还是一些规则来测试和选择一个吗?
答
网络路径引用(例如,//example.com/
)是relative reference。为了解决相对的参考,a base URI is necessary。
当进入网络的路径引用到浏览器的地址栏,没有这样的基本URI可以与第一三种方式来建立,所以第四个方式,5.1.4. Default Base URI,适用:
如果没有一个条件如上所述,则基本URI由应用程序的上下文定义。由于此定义必须依赖于应用程序,因此如果未使用其他方法之一定义基本URI,可能会导致由不同类型的应用程序解释相同的内容。
换句话说,这取决于每个浏览器。
如果浏览器将只支持http
和https
,它可能会选择当用户输入类似“www.example.com”是被使用相同的方案,所以大概http
(见Suffix Reference)。但许多浏览器支持更多的方案。 file:////example.com/test
(火狐),file:///example.com/test
(铬):
例如,我的系统上,请求//example.com/test
使用file
方案解析为一个URI。