在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文件)可以从http
或https
上下文加载时,它们特别有用。 通过使用协议相对URL,您可以避免执行
if (window.location.protocol === 'http:') { myResourceUrl = 'http://example.com/my-resource.js'; } else { myResourceUrl = 'https://example.com/my-resource.js'; }
整个代码库中的逻辑types(当然,假定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。
它会自动添加https或http,具体取决于请求的方式。