http權威指南學習筆記(二)

2022-03-22 14:53:40 字數 4008 閱讀 7106

url與資源

我又回來做筆記啦,書已經看了好幾章了,感覺確實學習了很多東西,弄明白了很多原來相對模糊的東西,不過感覺這本書確實理論性比較強,前幾章類似於http的說明書吧,那麼這麼說的話,感覺之前做web開發時候連說明書都沒看就直接上了,這顯然是不行滴,不過感覺理論這種東西很容易忘,尤其是我這種非計算機專業的孩子理論知識上比起血統純正的計算機專業的學生還是有差距的,自學的孩子傷不起啊,實習回來,一面試發現原來的基礎知識都忘得差不多了,坑爹啊

廢話就說到這裡,開始這次的筆記吧,這章主要說的是url與資源的問題,根據我的理解呢,其實url就是為了給網際網路上眾多的資源定位,以方便人們可以快速準確的找到資源,當然,與現實生活中一樣,這個所謂網路上的位址也是有它自己獨特的規則的。

這裡先簡單的說下uri,url,urn之間的關係吧,其實上次筆記也說過,urn與url都是uri的子集,urn是未來資源定位的理想型態,可以直接通過資源名(urn)尋找到所需要資源,而不用關心這個資源到底處於網路上哪個位置。而url是現在最通用的資源定位方式。

url的基本結構:

url基本有三個部分

第一部分:url方案,也就是所謂的scheme,具體的來說也就是url中的http等的東西,他告訴web客戶端怎麼去訪問資源。

第二部分:服務位置,他告訴web客戶端資源在**

第三部分:資源路徑,路徑說明的請求的是伺服器上那個特定的本地資源。

url可以通過http之外的協議訪問資源,他們可以指向網上任意的資源,或者個人e-mail。

這裡閒扯一段歷史(個人愛好(¯﹃¯)),在url出現之前,人們是使用神馬來定位的呢,其實是ftp,需要進過種種繁雜的操作步驟人們才能找到自己想要的資源,看到現在這麼方便的獲取資源,真的是技術改變生活啊。

url的基本格式:

://:@:/;?#

下面介紹下每個部分:

方案(使用什麼協議):

方案是規定如何訪問指定資源的主要識別符號,他負責告訴解析url的應用程式用什麼協議

方案必須以乙個字母符號開始,有第乙個「:」將其與url的其餘部分分割開來,方案名是與大小寫無關的,因此http與http都沒有區別

主機與埠:

主機標識了網上能夠訪問資源的宿主機器,可以用主機名或者ip表示主機名,埠標誌了伺服器正在監聽的網路埠,對下層使用了tcp協議的http來說,預設埠為80.

使用者名稱與密碼:

很多伺服器都需要使用者輸入使用者名稱與密碼才能訪問資料,ftp伺服器就是這樣乙個常見的例子:

這裡ftp是協議名,littlewhite是使用者名稱,white是密碼,ftp.test.edu是主機名,後面的是路徑,他也遵守url的基本格式。

路徑:url的路徑說明了資源位於伺服器的什麼地方,路徑通常很像乙個伺服器的檔案系統路徑,比如:

路徑可以用字元「/」將http url的路徑元件分為一些路徑段,每個路徑段都可以有自己的引數。

引數:

為了想應用程式提供它們所需要的輸入引數,url中有乙個引數元件,這個元件就是url中的名值對列表,由字元「;」將其與url其他部分分割開來,它們為應用程式提供了訪問資源所需要的附加資訊。比如:

這個例子中,有乙個引數type=d,名字為type,值為d。

前面也說過,http url路徑可以分為若干個路徑段,每個都有自己的引數,比如:

/test2;type=r

查詢字串:

這個東西在我們平時的web開發中經常遇到,先上例子:

上面這個例子?的後面就是所謂的查詢字串了,伺服器可以解析這個查詢字串,獲取他所帶的資訊,加以利用。

片段:

這個東西我們平時比較少會遇到,它是做什麼的呢?有些資源,如html頁面,在資源及之外還可以進行進一步的細分,比如我想瀏覽乙個格式為html的頁面的乙個特定位置,如果沒有片段的話我們可能需要先獲取整個html頁面,再進行定位,但是使用了片段的話,可以再傳送url時候就對html內部進行定位,比如:

傳送這個請求之後,伺服器仍會處理整個物件,而不是物件的片段,也就是說伺服器仍會返回完整的test.html頁面,但當客戶端能開啟這個頁面的時候會自動跳到drills這個部分。也就是說片段這個東西其實是對客戶端用的

url相對路徑和絕對路徑:

這個部分建議參考這篇博文 這裡對於相對路徑和絕對路徑有比較詳細的介紹,當然這個博文說的是檔案系統的,而url的相對路徑與絕對路徑類似,但有幾點需要強調下:

解析相對url流程圖:

下面來個例子:

解析相對路徑./test2.html (從頁面訪問)

路徑為./test2.html,基礎為

相對路徑方案為空,沿著圖示的左半邊向下處理,繼承基礎url方案(http)。

至少乙個元件為非空,一直處理到低端,繼承主機和埠。

將來自相對url的元件與我們繼承來的元件進行組合,得到

令人蛋疼的字元問題:

如上面所說的,url是可以再各種協議中使用的,也就是說無論任何協議都可以準確安全的傳送到目的地,者流就有個問題了:有些協議會剝去一些特定的字元做專門的用途,可以參考類似於我們在程式設計中經常遇到的關鍵字元什麼的,而url既要保證所有協議傳輸時都不能出問題,又要保證url對人類來說有可閱讀性,而且還有完整性,要求非常非常的多,這時轉義機制就華麗麗的誕生了~

url使用的是us-ascii,但是這個字元主要針對的是英文,隨著網際網路的發展,各種類別的語言都有了通過url傳輸的需求,而且也有二進位制傳輸的需求等等,為了避開安全字符集帶來的限制,人們設計了一種編碼機制,用來表示url中各種不安全的字元,這種轉義方法包含了乙個百分號(%),後面跟著兩個字元ascii碼的十六進製制數,下面舉個例子:

空格  ascii碼:32(0x20) 這個就等於不安全的  love you 了

字元限制:

在url中,有幾個字元是被保留起來的,有著特殊的含義,這個具體的可以在網上查到,就不一一枚舉了。

各種方案:

這裡列舉一些比較常見的方案:

關於url的未來:

之前提到過urn這個東西,urn這個東西非常強大,因為如果你能使用urn那麼你將不需要知道資源的具體位置在哪個伺服器上,我們只需要輸入目標資源的urn,就可以在透明的情況下找到我們所需要的資源,這就想說我現在想要知道小明童鞋現在在世界的**,把它直接傳送到我面前,那麼他就可以直接過來了。現在存在一種偽urn,就是將目標資源所謂的編碼交給使中間伺服器進行查詢,將查詢到的資源的整合返回,感覺有點類似於搜尋吧。。

這次的筆記就到這裡了,下一章是長篇啊,工作量略大,加油。

HTTP權威指南學習筆記

一直以為學習前端只需要掌握js語法 html語法 css就夠了,確實沒有想到還需要很多知識點,今天來細細學習http。乙個http請求由4部分組成 伺服器返回的http相應包含3部分 乙個數字和文字組成的狀態碼,用來顯示請求的成功和失敗 乙個響應頭集合 響應主體 最常用的web伺服器是apache和...

《http權威指南》學習筆記

型別 uri 當給定了uri,http就可以解析出物件。uri有兩種形式,分別稱為url和urn。url urn 事務 狀態碼 web頁面中可以包含多個物件 協議版本 web的結構元件 位於客戶端和伺服器之間,接收所有客戶端的http請求,並將這些請求 給伺服器 可能會對請求進行修改之後 快取 we...

HTTP權威指南 學習筆記

目錄http結構 web機械人 識別,認證與安全 內容發布與分發 http hypertext transfer protocol,超文字傳輸協議 一條http事物由一條請求命令和乙個響應結果組成。http報文 http message 格式化資料塊進行的。每條http響應報文返回時都會攜帶乙個狀態...