面試官給我挖坑:URI中的 “//” 有什么用?
我們在瀏覽網頁的時候,需要在瀏覽器中輸入http://或者https://開頭的URL地址,類似http://honeypps.com,那么這里的"://"或者"//"有什么用呢?
說到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]
結構圖如下:
第一部分,scheme,可以翻譯成協議名,表示資源應該使用哪種協議來訪問。最常見的就是http和https了,其它的如:ftp、file等。
在 scheme 之后,必須是三個特定的字符“://”,它把 scheme 和后面的部分分離開。這個是今天的主角,如果單單是用作區分,完全可以只使用“:”這1個字母,而不是“://”這3個字母。
在“://”之后,是被稱為“authority”的部分,表示資源所在的主機名,通常的形式是“host:port”,即主機名加端口號。以前authority還會包含身份信息userinfo,即“user:passwd@”的形式,不過現在已經不流行了,可以忽略。在后面的內容代表什么含義,相信大家都已經很清楚了。
當有人問你://有什么用的時候,其實是在挖坑。我們在面試的時候,經常在回答完一個問題的時候,面試官會抓著你答案里的一個點進行“深層次挖掘”,也可以稱之為“奪命連環問”,久而久之我們會形成一種習慣,總覺得問題的背后有什么深層次的東西,需要我們絞盡腦汁去思考。這里的://就是一個典型的反例。
在2009年10月,BBC中的一篇新聞講述了"//"的用途。原文地址:http://news.bbc.co.uk/2/hi/technology/8306631.stm。這里我講這篇報道截了一個圖,如下所示:
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”,含義是:互聯網獻給所有人。蒂姆•伯納斯•李不僅被視為英國人的驕傲,他同樣無可爭辯地贏得了全世界的尊重。
不僅因為他的發明改變了人類生活方式,改變了全球信息交流的傳統模式,帶來了一個全新的信息時代;更偉大的是,為了互聯網的全球普及,讓所有人不受限制地使用互聯網,他宣布放棄為“WWW”申請專利。本可以在金錢上與比爾•蓋茨不相上下,但他決定把自己的互聯網成就無償向全世界開放,個人失去了天價財富,卻讓包括我們在內的全人類獲得受益,今天我們點擊幾乎任何一個網址都少不了“WWW”,這意味著我們時時在分享著蒂姆的無私奉獻。1980年蒂姆•伯納斯•李寫下的程序奠定了互聯網的基礎,到2007年10月,全球網站數已經突破了2.5億個,可想而知,他的奉獻讓全球互聯網迅猛發展,也讓所有的網絡運營商們賺了不計其數的錢。
1955年6月8日,蒂姆•伯納斯•李出生于英格蘭倫敦西南部。他的父母都是計算機科學家,都參與了世界上第一臺商業電腦——曼切斯特1型(Manchester Mark I)的設計建造。1976年蒂姆在牛津大學物理系獲得一級榮譽學位。1980年6月至9月,蒂姆在歐洲核子研究組織(CERN)時,提出了一個獨到的構想:創建一個以超文本系統為基礎的項目,使分布于各地的計算機得以分享及更新信息。同時,他創建了ENQUIRE原型系統。l990年,蒂姆在當時的NEXTSTEP網絡系統上,開發出世界上第一個網絡服務器和第一個客戶端瀏覽器編輯程序,建立了全球第一個WWW網站。他當之無愧地成為全球互聯網的創始人。今天,WWW、http已成為人們的日常詞匯,互聯網已經影響到我們的工作、娛樂、社交等幾乎所有領域。然而蒂姆從不居功自傲,每談到成就,他總是平靜地說:“我沒有發明互聯網,我只是找到了一種更好的方法。”
今天的知識點,你GET到了嘛?