【发布时间】:2014-10-09 18:41:34
【问题描述】:
我注意到 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
【问题讨论】:
-
//会检测客户端当前使用的协议,所以如果你使用https://,它会调用https://ajax.googleapis.com...,而如果你在网站上使用http://,它将致电http://ajax.googleapis.com....。这肯定有一些问题,就好像你在一个文件协议(file://)上它会调用file://ajax.googleapis.com...,它不存在。 -
查看link
-
@PicrofoSoftware 所以,基本上这是一种宽容的说法,“我接受 https 或 http?”
-
@Matthew 哈哈,没错!事实上,这并不总是必须是 https/http,它取决于客户端 Web 浏览器使用的协议。这实际上是为了正确加载脚本,因为如果您使用
https://并且网站请求加载不安全的内容(来自http协议),除非您的浏览器允许,否则该内容将被阻止。但是,如果您要使用http://并要求安全加载内容 (https://),那很好;因此在这两种情况下安全加载内容会更安全。 -
@LieRyan:我认为在 HTTPS 站点上从某个“随机”代理加载数据是不可取的。想想中间人攻击。
标签: javascript html dns