舉例以下:html
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
瀏覽器
http://
爲協議名,標明瞭請求須要使用的協議,一般使用的是HTTP
協議或者安全協議 HTTPS
.其餘協議還有mailto:
用戶打開郵箱的客戶端,和ftp:
用來作文件的轉換, file
用來獲取文件,data
獲取外部資源等安全
www.example.com
爲域名,標明瞭須要請求的服務器的地址.ruby
:80
是端口號,標明瞭獲取服務器資源的入口服務器
:80
是端口號,標明瞭獲取服務器資源的入口
端口號用於區分服務的端口,一臺擁有IP地址的服務器能夠提供許多服務,好比Web
服務、FTP
服務、SMTP
服務等.那麼,服務器的資源經過「IP地址+端口號」來區分不一樣的服務.
若是把服務器比做房子,端口號能夠看作是通向不一樣服務的門,spa
/path/to/myfile.html
表示服務器上資源的路徑,過去這樣的路徑標記的是服務器上文件的物理路徑,可是如今,路徑表示的只是一個抽象地址,並不指代任何物理地址.code
?key1=value1&key2=value2
是請求裏提供的額外參數.這些參數是以鍵值對的形式,經過&
符號分隔開來,服務器能夠經過這些參數進行相應的個性化處理regexp
#SomewhereInTheDocument
是對資源的部分補充.fragment
能夠理解爲資源內部的書籤
.用來想服務器指明展現的內容所在的書籤
的點.例如對於HTML
文件來講,瀏覽器會滾動到特定的或者上次瀏覽過的位置.對於音頻或者視頻資源來講,瀏覽器又會跳轉到對應的時間節點.視頻
咱們上面所說的都是絕對路徑
,可是URL
也有相對路徑
的表現形式.
URL
所請求的資源依賴於請求所在的上下文,也就是當前環境,在瀏覽器的輸入框內URL
沒有上下文,因此必須提供絕對路徑
.
可是當URL
用於文件中時,例如HTML
的頁面,狀況就大有不一樣了,由於瀏覽器已經擁有了文件的URL
,因此能夠自動填補文件內使用的URL
丟失的部分,例如協議
,域名
,端口
等,因此咱們能夠較爲直觀的區分相對路徑
和絕對路徑
.
若是URL
以/
開頭,瀏覽器會從根服務器去獲取資源,而不是從給定的文件夾中獲取.
咱們用一些例子來直觀的理解下
完整的URL
:htm