【问题标题】:Does using //www.example.com in Javascript chose http/https protocol automatically在 Javascript 中使用 //www.example.com 是否会自动选择 http/https 协议
【发布时间】:2011-08-13 13:30:51
【问题描述】:

省略 http 似乎使它使用 HTTP 连接,但我没有启用 HTTPS 的站点来测试它是否也适用于 HTTPS。

使用 //www.example.com/test.js 会根据主文档的协议自动选择协议吗?

【问题讨论】:

标签: javascript https network-protocols


【解决方案1】:

http://paulirish.com/2010/the-protocol-relative-url/

关于这个问题有一篇很棒的文章。包括在这里:

相对协议的 URL

2010 年 10 月 27 日

作者:保罗·爱尔兰

这个小技巧可以让你摆脱一些麻烦:

<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 时,您将使用术语“方案”而不是“协议”。

这个技巧在 CSS 中也可以正常工作:

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

…假设您指向的站点在 HTTP 和 HTTPS 上都提供此资产。

警告:当在 &lt;link&gt;@import 上使用样式表时,IE7 和 IE8 会下载文件两次。但是,所有其他用途都很好。

感谢 miketaylr、ralphholzmann、annevk 和 ajaxian,我想我是在 4 年前学到的?也许吧?

2011.01.23:但是.. 在谷歌分析 sn-p 上使用这个怎么样? 是的,当然,那不是很好.. 所以我与 Google Analytics javascript 首席开发人员(上帝,我喜欢在 google 工作)一起工作,看看我们是否可以做到这一点.. 事实证明我们不能。在某些安全设置(不确定它们是否为默认设置)下,当请求非“ssl”子域时,IE6 中存在一个边缘案例错误,该错误会导致对话框爆炸。截图在这里。因此,如果您不关心 IE6,请随意从您的 GA sn-p 中删除 40 个字节。否则您将需要那个三元运算符。 :)

【讨论】:

    猜你喜欢
    • 2017-09-25
    • 1970-01-01
    • 2011-12-22
    • 2016-01-16
    • 2013-01-16
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多