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

可能的复制品:
URI 以两个斜杠开始 & hellip; 它们的行为如何?
绝对 URL 省略了协议(方案) ,以保留当前页面之一
脚本和链接标签的简写是//? 有人以前见过/使用这个吗?

我在浏览 HTML5重置的来源时,注意到了 以下行:

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

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

72858 次浏览

“两个正斜杠”是“使用用于加载当前页面的任何协议请求被引用的资源”的常用缩写。

当元素(例如您的示例中的 JS 文件)可以从 httphttps上下文中提供和/或请求时,它们最为人熟知的是“协议相对 URL”,特别有用。通过使用协议相对 URL,可以避免实现

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

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

一个突出的现实例子是 Magento 1.X 电子商务引擎: 出于性能原因,分类和产品页面默认使用纯 http,而结帐是启用 https的。

如果某些资源(例如站点头部的促销横幅)通过非协议相对 URL (即 http://example.com/banner.jpg)引用,那么到达启用了 https的结算站点的客户将受到相当不友好的欢迎

“页面上有不安全的元素”

可以肯定的是,这对生意并不是很有利。

如果上述资源是通过 //example.com/banner.jpg引用的,那么浏览器会通过适当的协议在普通的 http 产品/类别页面和支持 https 的签出流中加载它。

Dr: 即使最小的可能性是混合的 http/https 环境,也只需使用双斜杠/协议相对 URL 来引用资源ーー假设为它们提供服务的主机同时支持 http 和 https。

它将自动添加 https 或 http,具体取决于请求是如何发出的。