我注意到CDN在脚本源的开头使用了//
。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
这在本地(显然)不起作用,所以我在http:
之前添加//
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
那么......为什么他们将//
放在开头而不是http://
?有什么意义?是某种DNS预取吗?
另外,如果脚本元素位于页面底部,那么//
是否无效?
https://developer.mozilla.org/en-US/docs/Web/HTTP/Controlling_DNS_prefetching
答案 0 :(得分:10)
//
是一个相对协议指标。它将加载当前正在使用的任何协议。如果您通过http:
加载页面,则会将资源加载到http:
上。如果您在https:
上加载,则会加载https:
。这很重要,因为通过HTTPS加载的页面也应该通过HTTPS加载其资源以用于安全目的。
它不能在本地工作的原因是因为在本地,您使用file:
协议(显然),所以它会尝试加载资源{ {1}},由于它是一个URL,而不是您目录中资源的文件路径,因此无法工作。
您可能还想查看this page描述其用法(提示,常见陷阱等)和protocol-relative标记。