160

可能重复:
URI 以两个斜杠开头……它们的行为如何?
省略协议(方案)的绝对 URL,以便将当前页面
简写之一保留为 // 用于脚本和链接标签?有人看到/使用过这个吗?

当我注意到以下行时,我正在查看HTML5 Reset的源代码:

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

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

4

2 回答 2

241

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

http最著名的是“协议相对 URL”,当元素(例如示例中的 JS 文件)可以从 a或httpscontext提供和/或请求时,它们特别有用。通过使用协议相对 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)。

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

如果某些资源(例如网站标题中的促销http://example.com/banner.jpg横幅)通过非协议相关 URL(即https

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

提示 - 可以放心地假设,这对商业来说并不是很好。

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

tl;dr:即使有最轻微的混合 http/https 环境的可能性,只需使用双斜杠/协议相对 URL 来引用资源 - 假设服务它们的主机同时支持 http 和 https。

于 2012-03-10T12:31:40.877 回答
14

它将根据请求的发出方式自动添加 https 或 http。

于 2012-03-10T12:31:51.673 回答