浏览器对以双斜杠开头的URL的支持


107

我最近看到了一些没有协议的链接。似乎不太难理解-我认为这是个好主意,非常直观。

对于那些不知道的人,使用URL类似//example.com/script.js将指向http://example.com/script.jshttps://example.com/script.js取决于URL是否源自httphttps URL。例如,从https页面包含http脚本或图像可能是安全问题,因此可以解决此问题,而无需在代码中进行协议检测。

我的问题是,有什么样的浏览器/操作系统支持?在生产中使用安全吗?这肯定会使事情变得容易一些。

简单的示例和测试:http : //codetester.org/916c6916

编辑:这是我几年来一直在将我的公司的广告服务器用于生产中的许多事情的一个后续步骤,而没有发生任何问题。


9
在这里回答:stackoverflow.com/questions/4659345/… ---简而言之,它在RFC规范中,因此所有主要浏览器都应支持它。
基思

1
@Keith谢谢,这一切都很好,但是从RFC规范来看,我实际上看不到任何有关此双斜杠开头的内容。希望找到已经完成的确定性浏览器测试。:)
dtbarne

Answers:


88

此行为是RFC 1808(第4节)的一部分,该文件已有 16年的历史,因此每个主流浏览器都应该(并且确实)支持此行为。

令人遗憾的是,如果在或上使用协议相对URL,则IE7和-8会出现一个错误,使它们两次下载资源,这虽然不算什么大问题,但很丑陋,应牢记。link@import


这是旧文章,但我也想说这根本不是一个好习惯。最近,我在一个客户管理仪表板上遇到了一些麻烦。//code.jquery.com/jquery-2.1.3.min.js找不到URL ,并且库未加载。然后,我尝试加载http://code.jquery.com/jquery-2.1.3.min.js并看到错误页面。我怀疑它们在内部设置的代理或VPN或防火墙安全配置。更新URL以使用https协议后,一切正常。
TwystO

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.