url/src/href属性中的两个正斜杠



可能重复:
URI以两个斜杠-hellip;开头;他们的行为如何
省略协议(方案)以保留当前页面的绝对URL
脚本和链接标记的简写为//?以前有人看到/使用过这个吗?

我在浏览HTML5 Reset的源代码时注意到了以下行:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>

为什么URL以两个斜杠开头?这是http://的简写吗?

;两个正向斜杠";是";使用正在被用来加载当前页面的任何协议来请求所引用的资源"

最著名的是";协议相关URL";,当元素(例如示例中的JS文件)可以从httphttps上下文提供和/或请求时,它们特别有用。通过使用与协议相关的URL,可以避免实现

if (window.location.protocol === 'http:') {
    myResourceUrl = 'http://example.com/my-resource.js';
} else {
    myResourceUrl = 'https://example.com/my-resource.js';
}

代码库中的逻辑类型(当然,假设example.com的服务器能够通过httphttps提供内容)。

现实世界中一个突出的例子是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。

相关内容

最新更新