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

可能重复:
URI以两个斜线开头……他们如何performance?
绝对url省略协议(scheme),以保留当前页面的一个
速记为//脚本和链接标签? 任何人看到/使用此之前?

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

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

为什么URL以两个斜杠开始? 这是一个简短的http://

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

最有名的是“协议相对URL”,当元素(例如你的例子中的JS文件)可以从httphttps上下文加载时,它们特别有用。 通过使用协议相对URL,您可以避免执行

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

整个代码库中的逻辑types(当然,假定example.com服务器能够通过httphttps服务资源)。

一个突出的现实世界的例子是Magento电子商务引擎:出于性能的原因,商店的网页默认使用普通的http ,而结帐是https启用。

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

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

提示 – 正如你所能想象的那样,抛弃一般的非技术型人物。

如果前面提到的资源是通过//example.com/banner.jpg引用的,那么浏览器会预先考虑正确的协议。

tl; dr:即使是混合的http / https环境,也可以使用双斜线/协议相对URL来加载资源 – 假设服务内容的主机同时启用了http和https。

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