可能重复:
URI以两个斜杠-hellip;开头;他们的行为如何
省略协议(方案)以保留当前页面的绝对URL
脚本和链接标记的简写为//?以前有人看到/使用过这个吗?
我在浏览HTML5 Reset的源代码时注意到了以下行:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
为什么URL以两个斜杠开头?这是http://
的简写吗?
;两个正向斜杠";是";使用正在被用来加载当前页面的任何协议来请求所引用的资源"
最著名的是";协议相关URL";,当元素(例如示例中的JS文件)可以从http
或https
上下文提供和/或请求时,它们特别有用。通过使用与协议相关的URL,可以避免实现
if (window.location.protocol === 'http:') {
myResourceUrl = 'http://example.com/my-resource.js';
} else {
myResourceUrl = 'https://example.com/my-resource.js';
}
代码库中的逻辑类型(当然,假设example.com
的服务器能够通过http
和https
提供内容)。
现实世界中一个突出的例子是Magento1.X电子商务引擎:出于性能原因,类别和产品页面默认使用纯http
,而结账则启用https
。
如果某些资源(例如,网站标题中的促销横幅)通过非协议相关URL(即http://example.com/banner.jpg
)引用,则到达启用https
的结账处的客户会收到相当不友好的
"在这个页面上存在不安全的元素";
提示——人们可以放心地假设,这对商业来说并不太好。
如果上述资源是通过//example.com/banner.jpg
引用的,则浏览器会通过适当的协议将其加载到普通的http产品/类别页面和启用https的签出流中。
tl;dr:即使是最轻微的混合http/https环境的可能性,也只需使用双斜杠/协议相关URL来引用资源——假设为它们提供服务的主机同时支持http和https
它将根据请求的方式自动添加https或http。