星球狂想战队|面试官给我挖坑:URI中的 “//” 有什么用?

我们在浏览网页的时候 , 需要在浏览器中输入http://或者https://开头的URL地址 , 类似 , 那么这里的"://"或者"//"有什么用呢?
说到URL就不得不提URI了 。 用什么来标记服务器上的资源呢?用的就是URI(Uniform Resource Identifier) , 即统一资源标识符 。 URI经常出现在浏览器的地址栏里 , 有时候也会称它为“网络地址” , 简称“网址” 。 不过 , 严格意义上来讲 , URI不完全等同于网址 , 它包含URL(Uniform Resource Locator , 统一资源定位符)和URN(Uniform Resource Name ,统一资源命名) 。
由于URL的普及性特别高 , 狭义上 , 我们可以简单地把URI和URL看做是相等的东东 。
我们来看一下URI的格式:
URI = scheme:[//authority]path[?query][#fragment]authority = [userinfo@]host[:port]结构图如下:
星球狂想战队|面试官给我挖坑:URI中的 “//” 有什么用?第一部分 , scheme , 可以翻译成协议名 , 表示资源应该使用哪种协议来访问 。 最常见的就是http和https了 , 其它的如:ftp、file等 。
【星球狂想战队|面试官给我挖坑:URI中的 “//” 有什么用?】在 scheme 之后 , 必须是三个特定的字符“://” , 它把 scheme 和后面的部分分离开 。 这个是今天的主角 , 如果单单是用作区分 , 完全可以只使用“:”这1个字母 , 而不是“://”这3个字母 。
在“://”之后 , 是被称为“authority”的部分 , 表示资源所在的主机名 , 通常的形式是“host:port” , 即主机名加端口号 。 以前authority还会包含身份信息userinfo , 即“user:passwd@”的形式 , 不过现在已经不流行了 , 可以忽略 。 在后面的内容代表什么含义 , 相信大家都已经很清楚了 。
当有人问你://有什么用的时候 , 其实是在挖坑 。 我们在面试的时候 , 经常在回答完一个问题的时候 , 面试官会抓着你答案里的一个点进行“深层次挖掘” , 也可以称之为“夺命连环问” , 久而久之我们会形成一种习惯 , 总觉得问题的背后有什么深层次的东西 , 需要我们绞尽脑汁去思考 。 这里的://就是一个典型的反例 。
在2009年10月 , BBC中的一篇新闻讲述了"//"的用途 。 原文地址: 。 这里我讲这篇报道截了一个图 , 如下所示:
星球狂想战队|面试官给我挖坑:URI中的 “//” 有什么用?In a Times article in October 2009, Berners-Lee admitted that the initial pair of slashes ("//") in a web address were "unnecessary". He told the newspaper that he easily could have designed web addresses without the slashes. "There you go, it seemed like a good idea at the time", he said in his lighthearted apology.
2009年10月 , 万维网之父蒂姆·伯纳斯·李承认 , 在网址前加上双斜线的做法是一个错误 。 他在美国首都华盛顿举行的一次研讨会上表示 , 他最初设计的在网址前面加上“//”的方案 , 既没有意义也没有必要 。 如果有机会再来一次 , 他会将双斜线去掉 。
对的 , 你没有看错 , URI里的“//”没啥diao用 。
为什么蒂姆·伯纳斯·李说“//”没用就是没用呢?这里补充一下蒂姆·伯纳斯·李的介绍 。
7月27日 , 在伦敦奥林匹克体育场举行的2012年伦敦奥运会开幕式上 , 一位英国科学家隆重登场 , 接受全场掌声 , 这个“感谢蒂姆”的场面惊动全球 , 成为开幕式的一个亮点 。 他就是互联网的发明者、被业界公认为“互联网之父”的英国人蒂姆?伯纳斯?李(Tim Berners-Lee) 。 在全世界的注目下 , 他在一台电脑前象征性地打出了一句话:“This is for Everyone” , 含义是:互联网献给所有人 。 蒂姆?伯纳斯?李不仅被视为英国人的骄傲 , 他同样无可争辩地赢得了全世界的尊重 。


推荐阅读