Javascript中使用//www.example.com会自动选择http/https协议吗?

6
略过http似乎可以使它使用HTTP连接,但我没有启用HTTPS的网站来测试是否对HTTPS也适用。
使用//www.example.com/test.js会根据主文档的协议自动选择协议吗?

1个回答

5

这篇文章介绍了一个与此问题密切相关的技术。以下是其中的内容:

协议相对 URL

2010年10月27日

作者:Paul Irish

有一个小技巧可以让你省去一些麻烦:

<img src="//domain.com/img/logo.png">

如果浏览器通过HTTPS查看当前页面,则会使用HTTPS协议请求该资源,否则通常会使用HTTP请求。这可以防止IE中出现可怕的“此页面包含安全和非安全项”错误消息,使所有资产请求保持相同的协议。
当然,如果您在本地查看文件,则会尝试使用file://协议请求该文件。
我们在HTML5 Boilerplate中使用此技巧来巧妙地请求Google CDN上的jQuery。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>

从技术上讲,根据RFC 3986,这被称为“网络路径引用”。哦,如果你想真正正确,当谈论URL时,你应该使用术语“scheme”而不是“protocol”。

这个技巧在CSS中也可以很好地工作:

.omgomg { background: url(//websbestgifs.net/kittyonadolphin.gif); }

假设您所指向的网站在HTTP和HTTPS上都有此资源可用。

注意:当在<link>@import中用于样式表时,IE7和IE8会下载文件两次。然而,所有其他用途都没有问题。

感谢miketaylr、ralphholzmann、annevk的聪明才智,以及ajaxian,在那里我可能学到了4年前的知识?也许?

2011.01.23:但是..在Google Analytics代码片段中使用这个怎么办? 当然可以,那不是很好吗..所以我与Google Analytics JavaScript主要开发者(天啊,我喜欢在谷歌工作)合作,看看我们能否这样做..结果我们不能。在IE6中存在一个边缘情况错误,导致对非“ssl”子域请求时弹出对话框...在某些安全设置下(不确定是否为默认设置)。截图在这里。因此,如果您不关心IE6,则可以将GA片段减小40字节。否则,您将需要使用三元运算符。:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接