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

时间:2012-03-10 12:28:08

标签: html html5 http https relative-url

  

可能重复:
  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://的缩写吗?

2 个答案:

答案 0 :(得分:191)

“两个正斜杠”是“现在正在使用的任何协议”的常用简写。

最着名的“协议相对URL”,当可以从httphttps上下文加载元素(例如示例中的JS文件)时,它们特别有用。通过使用协议相对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电子商务引擎:出于性能原因,商店的页面默认使用普通http,而结帐是https启用。

当非协议相对URL(即http://example.com/banner.jpg)引用硬编码资源(即网站标题中的促销横幅)时,达到https启用结帐的客户将受到相当不友好的欢迎

  

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

提示 - 正如你可以想象的那样,将普通的非技术人士抛弃了。

如果上述资源是通过//example.com/banner.jpg引用的,浏览器会负责预先安排正确的协议。

tl; dr:即使是混合的http / https环境的最轻微的可能性,只需使用双斜杠/协议相对URL来加载资源 - 假设提供内容的主机同时启用了http和https

答案 1 :(得分:9)

它会自动添加https或http,具体取决于请求的执行方式。