“http://”中的“//”是什么意思?

10

我想知道URI标准的设计者为什么选择在URI的定义中使用//,比如http://

为什么要这么复杂呢?为什么不直接使用http:呢?


1
好的,Windows 也使用 \\计算机名\资源 来识别资源,所以这并不是一个奇怪的约定... - user541686
2
我不介意 //。它让我们可以做像是 //example.com/image.png 这样的事情。 - Ignacio Vazquez-Abrams
如果你只留下文本中的“http:”,那么眼睛会感到困惑,不知道URL从哪里开始。现在更加清晰了。 - Aristos
2个回答

30

以下是关于IT技术的翻译内容:这里有答案。(引用自The Web’s Inventor Regrets One Small Thing)。

回想起来,Tim Berners-Lee也会将其移除。

它被包含的原因是:

双斜杠在当时虽然是编程约定,但最终证明并不是真正必要的。


1
@Mehrdad - 你需要提前知道TBL是语法中的主要部分(尽管你可以通过RFC作者列表找到这一点),但是FWIW可以通过在谷歌上搜索“Tim Berners-Lee”“双斜杠”来找到许多版本(基本上是相同的东西),包括一些视频,以防你更感兴趣地看/听他说它。 :) - James Manning
2
具体来说,这是一段更近期的(据我所知)视频采访,他在其中重申了关于双斜杠的评论:http://www.dailymotion.com/video/xh57ko_sir-tim-berners-lee-on-the-double-slash-in-the-web-address_tech - James Manning

10

值得一提的是,RFC 2396涵盖了这个问题。

http://www.ietf.org/rfc/rfc2396.txt

特别是第5.2节的第7部分中的伪代码最好地回答了你的问题,即“//”用于表示其后面是URI的权限部分(因为伪代码还明确指出它不是URI的必需部分)。

if authority is defined then
         append "//" to result
         append authority to result

另外,在RFC 3986第3节中,更详细地阐述了以下内容:

当没有authority时,路径不能以两个斜线字符(“//”)开头。这些限制导致路径有五个不同的ABNF规则(第3.3节),其中只有一个规则与任何给定的URI引用匹配。


谢谢。不过,它没有解释这个设计选择的原因,而 : 可以足够了。对于搜索的努力加一分 :) - Vincent Cantin
3
@Vincent - 添加了3986参考文献,更好地解释了它。URI语法支持完全没有权限部分(因此,您可以有一个引用,例如http:foo/bar.html,其权限与当前上下文/页面可能相同)。 正如Simeon所指出的那样,虽然这不是一个常用的“功能”,但由于它仍然是语法的一种特性,TBL应该优化常见情况并删除它们。 :) - James Manning
我选择了你的答案,因为它包含更多的细节,但Simeon的答案也很好。 - Vincent Cantin
1
@Vincent - 在我看来,他的回答更好,因为它给出了比TBL更深入的响应:“哎呀,我的错!”- 我的回答有一些技术信息,但如果你愿意改变它,我更愿意你把他的标记为答案。 :) - James Manning

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