可能重复:
URI starting with two slashes … how do they behave?
Absolute URLs omitting the protocol (scheme) in order to preserve the one of the current page
shorthand as // for script and link tags? anyone see / use this before?
当我注意到HTML5 Reset:
时,我正在浏览following line的来源<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
为什么网址以两个正斜杠开头?这是http://
的缩写吗?
答案 0 :(得分:191)
最着名的“协议相对URL”,当可以从http
或https
上下文加载元素(例如示例中的JS文件)时,它们特别有用。通过使用协议相对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电子商务引擎:出于性能原因,商店的页面默认使用普通http
,而结帐是https
启用。
当非协议相对URL(即http://example.com/banner.jpg
)引用硬编码资源(即网站标题中的促销横幅)时,达到https
启用结帐的客户将受到相当不友好的欢迎
“此页面上有不安全的元素”
提示 - 正如你可以想象的那样,将普通的非技术人士抛弃了。
如果上述资源是通过//example.com/banner.jpg
引用的,浏览器会负责预先安排正确的协议。
tl; dr:即使是混合的http / https环境的最轻微的可能性,只需使用双斜杠/协议相对URL来加载资源 - 假设提供内容的主机同时启用了http和https 强>
答案 1 :(得分:9)
它会自动添加https或http,具体取决于请求的执行方式。