概述
URL的概念
URL,Uniform Resource Locator,統一資源定位符,它是一個網頁的關鍵概念,它是瀏覽器使用的機制來檢索Web上的任何已發布的資源。
一個網址無非是一個給定的獨特的資源在網絡上的地址。在理論上,每個有效的網址指向一個獨特的資源。這些資源可以是一個HTML頁面,一個CSS文件,圖像,等等。在實踐中,也有一些例外,最常見的是一個URL指向不再存在或已移動的資源。作為由Web服務器表示的資源和網址本身是由Web服務器處理的,它是由Web服務器的所有者來仔細管理該資源及其相關的網址。
URI、URL與URN
- URI:Uniform Resource Identifier,統一資源標識符;
- URL:Uniform Resource Locator,統一資源定位符;
- URN:Uniform Resource Name,統一資源名稱。
URL 與 URN 是 URI 的子集,它們之間的關系如下圖。
URL的組成
下面幾個是簡單的 URL:
http://ursb.me
http://ursb.me/archives/
http://ursb.me/archives/search?q=URL
任何這些網址可以輸入到您的瀏覽器的地址欄,告訴它加載相關聯的頁面與資源。
一個網址是由不同的部分組成,一些是強制性的和還有一些是可選的。接下來通過這個 URL 距離說一下各部分的含義與作用:
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
協議(Protocol)
http://
是協議部分,表示瀏覽器使用 HTTP 協議對 URL 進行處理。當然還有其他的協議,如mailto://
代表的是使用郵件客戶端打開,ftp://
則是使用 FTP 協議。
域名(Domain Name)
www.example.com
是一個域名,也可以使用 IP 地址。瀏覽器直接指向域名所在的 Web 服務器。
端口(Port)
:80
是端口。它表示用于訪問 Web 服務器上的“gate”。通常如果 Web 服務器使用 HTTP 協議,端口可以省略(HTTP 默認 80 端口,HTTPS 默認 443 端口)。
文件路徑(Path to the file)
/path/to/myfile.html
是 Web 服務器上的資源路徑。在 Web 的早期,一個像這樣的路徑表示 Web 服務器上的物理文件位置。如今,它主要是一個抽象的Web服務器處理,沒有任何物理現實。
參數(Parameters)
?key1=value1&key2=value2
提供 Web 服務器的額外參數。這些參數是&
分隔的鍵/值對的列表。在返回資源之前,Web 服務器可以使用這些參數做額外的工作。每個 Web 服務器都有自己的有關參數的規則,而唯一可靠的方法來知道一個特定的 Web 服務器是否處理參數是通過詢問 Web 服務器所有者。
錨點(Anchor)
#SomewhereInTheDocument
叫做錨。它可以標記出以獲取資源中的子資源,也就是該文檔的某一個位置。
相對路徑
Absolute URLs vs relative URLs
絕對地址
-
Full URL (the same as the one we used before)
https://developer.mozilla.org/en-US/docs/Learn
-
Implicit protocol
//developer.mozilla.org/en-US/docs/Learn
在 HTML 的一些標簽的
src
屬性中比較常用,是一種省去協議部分的簡寫形式。 -
Implicit domain name
/en-US/docs/Learn
在 UNIX 系統中的文件查找中也經常用到,首部的
/
代表根目錄。
相對地址
-
Sub-resources
Skills/Infrastructure/Understanding_URLs
因為該地址不是以
/
打頭的,所以瀏覽器將試圖在一個包含當前資源的子目錄中找到該文檔。其等價于./Skills/Infrastructure/Understanding_URLs
,即在首部加上./
是一樣的效果。 -
Going back in the directory tree
../CSS/display
../
在 UNIX 系統中經常用到,代表返回目前位置的上層目錄。
相對 URL 的解析方式
首先先明確兩個概念:相對 URL 與 基礎 URL。
- 相對 URL:不完整的 URL。
- 基礎 URL:必須要有一個參考點的 URL。
相對 URL 的解析具體分為以下兩步:
-
找到基礎 URL
-
將相對URL轉換成絕對URL
原文:《URL》(From 《Before Coding》)