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

Posted

技术标签:

【中文标题】浏览器支持以双斜杠开头的 URL【英文标题】:Browser support for URLs beginning with double slash 【发布时间】:2011-10-10 18:09:22 【问题描述】:

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

对于那些不知道的人,使用像 //example.com/script.js 这样的 URL 将指向 http://example.com/script.jshttps://example.com/script.js,具体取决于 URL 是来自 http 还是 https 网址。例如,包含来自 https 页面的 http 脚本或图像可能是一个安全问题,因此无需在代码中进行协议检测即可解决该问题。

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

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

编辑: 只是一个跟进,几年来我一直将它用于我公司的广告服务器生产中的许多事情而没有问题。

【问题讨论】:

在这里回答:***.com/questions/4659345/… --- 简而言之,它在 RFC 规范中,所以它应该被所有主流浏览器支持。 @Keith 谢谢,这很好,但是通过 RFC 规范,我实际上并没有看到任何关于这个开始的双斜杠的东西。希望找到一些已经完成的权威浏览器测试。 :) 【参考方案1】:

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

可悲的是,如果在 link@import 上使用相对于协议的 URL,a bug with IE7 and -8 将使他们下载资源两次 - 这应该不是什么大问题,但它很难看,应该是牢记在心。

【讨论】:

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

如果你在本地机器上开发,它可能会失败,src="file://host.com/filename".

在这种情况下,您需要明确指定方案:http://host.com/filenamehttps://host.com/filename

【讨论】:

在离线开发时,无论如何都应该使用本地服务器,这会使 URL 变为“localhost”。

以上是关于浏览器支持以双斜杠开头的 URL的主要内容,如果未能解决你的问题,请参考以下文章

网络资源路径的双斜杠//和双反斜杠\的区别

网址中的两条斜杠是啥意思

JavaScript取代单斜杠以双斜线?

URL末尾处的斜杠“/”

常见开发语言中的注释

URI 中的 Scheme 是可选的吗?