可能重复:
URI 以两个斜杠开头……它们的行为如何?
省略协议(方案)的绝对 URL,以便将当前页面
简写之一保留为 // 用于脚本和链接标签?有人看到/使用过这个吗?
当我注意到以下行时,我正在查看HTML5 Reset的源代码:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
为什么 URL 以两个正斜杠开头?这是 的简写http://
吗?
可能重复:
URI 以两个斜杠开头……它们的行为如何?
省略协议(方案)的绝对 URL,以便将当前页面
简写之一保留为 // 用于脚本和链接标签?有人看到/使用过这个吗?
当我注意到以下行时,我正在查看HTML5 Reset的源代码:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
为什么 URL 以两个正斜杠开头?这是 的简写http://
吗?
http
最著名的是“协议相对 URL”,当元素(例如示例中的 JS 文件)可以从 a或https
context提供和/或请求时,它们特别有用。通过使用协议相对 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。
它将根据请求的发出方式自动添加 https 或 http。