在 URL 中,// 是什么?

Cha*_*son 42 url syntax uri

通常,当我看到 时//,它通常遵循一些协议前缀,如http:ftp:。我从未见过它放在其他任何地方。例如,

http://www.google.com/

是一个典型的 URL。

但是,我发现以下两种语法可以生成同一站点的不同版本,

http://www.weather.com/

http://www.weather.com//

我原以为//协议规范以外的任何地方都是无效的。令我惊讶的是,我错了。 产生同一个网站的不同版本的结局//是什么?

编辑:

那个网站上的某个人一定是注意到了另一个链接,因为现在两个链接都在同一页面上。

Dav*_*rtz 68

前导//是 URL 语法的一部分。万维网的发明者已经为那个错误道歉

真的,如果你仔细想想,它不需要双斜线。我本可以将它设计为没有双斜线。——蒂姆·伯纳斯-李爵士,万维网的发明者


至于尾随//,真的不是双斜线。第一个斜杠将主机名与路径分开。最后一个斜线路径。如果需要,Web 服务器可以处理/与空路径不同的路径,而weather.com 显然是这样做的。至于这是偶然的还是故意的,你得问他们。

  • 不管主机头,零或一个斜杠转换为相同的 http 请求:`GET / HTTP/1.1`:http://tools.ietf.org/html/rfc2616.html#section-3.2.3 (3认同)

小智 21

最近,有人认为双斜线确实有作用。Google 建议(例如,为了避免从安全页面意外调用不安全的内容)从嵌入式资源(样式表、js 等)中省略协议,如下所示

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
Run Code Online (Sandbox Code Playgroud)

因此,现在很明显,这种无协议 URL 是完全限定的 URL,而不是相对 URL(以单斜杠开头)。

  • 不再推荐。另见 https://www.paulirish.com/2010/the-protocol-relative-url/ (2认同)

Sta*_*mer 13

要实际回答的问题,原来的规格得到协议http:(或可能ftp:gopher:mailto:news:telnet:wais:file:prospero:),那么一个// 以指示正在使用的统一资源定位符(URL)句法,则主机(任选地与前缀user:password@),则地址从另一个开始/。这是在RFC 1738中提出的。

随着互联网的发展,它http:成为了主导协议,因此浏览器现在假设http://如果不存在前缀,就应该添加它。

  • 您的回答似乎表明在某一时刻可以将 URL 以外的其他内容与协议一起使用,并且会使用 `//` 以外的其他内容来表示它正在使用中......是吗? (3认同)
  • @Izkata 在 80 年代末和 90 年代末,当互联网刚刚起步时,针对各种项目建议了几种不同的格式。URL 是/是 URN 的一个子集(参见 RFC 3305),它们可以有不同的格式,例如 `isbn:1-23-456789-12-3`。在实践中,`http:` 定义其余部分将是一个 URL。RFC 只是提议,通常允许从未实现的扩展。蒂姆·伯纳斯-李曾说过,`//` 是一个“子网”(例如,`http://govnet/whitehouse.gov`)。这个想法从来没有被使用过,但是 '//' 仍然像现在所期望的那样并检查它。 (3认同)