url的組成

舉例以下:html

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument瀏覽器

協議(Protocol) 

http://爲協議名,標明瞭請求須要使用的協議,一般使用的是HTTP協議或者安全協議 HTTPS.其餘協議還有mailto:用戶打開郵箱的客戶端,和ftp:用來作文件的轉換, file用來獲取文件,data獲取外部資源等安全

域名(Domain)

www.example.com爲域名,標明瞭須要請求的服務器的地址.ruby

端口(Port)

:80是端口號,標明瞭獲取服務器資源的入口服務器

:80是端口號,標明瞭獲取服務器資源的入口
端口號用於區分服務的端口,一臺擁有IP地址的服務器能夠提供許多服務,好比Web服務、FTP服務、SMTP服務等.那麼,服務器的資源經過「IP地址+端口號」來區分不一樣的服務.
若是把服務器比做房子,端口號能夠看作是通向不一樣服務的門,spa

文件路徑

/path/to/myfile.html表示服務器上資源的路徑,過去這樣的路徑標記的是服務器上文件的物理路徑,可是如今,路徑表示的只是一個抽象地址,並不指代任何物理地址.code

參數(query)

?key1=value1&key2=value2是請求裏提供的額外參數.這些參數是以鍵值對的形式,經過&符號分隔開來,服務器能夠經過這些參數進行相應的個性化處理regexp

 

片斷(fragment)

#SomewhereInTheDocument是對資源的部分補充.fragment能夠理解爲資源內部的書籤.用來想服務器指明展現的內容所在的書籤的點.例如對於HTML文件來講,瀏覽器會滾動到特定的或者上次瀏覽過的位置.對於音頻或者視頻資源來講,瀏覽器又會跳轉到對應的時間節點.視頻

 

補充 : 相對路徑和絕對路徑

咱們上面所說的都是絕對路徑,可是URL也有相對路徑的表現形式.
URL所請求的資源依賴於請求所在的上下文,也就是當前環境,在瀏覽器的輸入框內URL沒有上下文,因此必須提供絕對路徑.
可是當URL用於文件中時,例如HTML的頁面,狀況就大有不一樣了,由於瀏覽器已經擁有了文件的URL,因此能夠自動填補文件內使用的URL丟失的部分,例如協議,域名,端口等,因此咱們能夠較爲直觀的區分相對路徑絕對路徑.
若是URL/開頭,瀏覽器會從根服務器去獲取資源,而不是從給定的文件夾中獲取.
咱們用一些例子來直觀的理解下
完整的URL:htm

相關文章
相關標籤/搜索