URL 的各個部分 - TerryLee7788/JS_test GitHub Wiki

URLS

進入一個網址之前, 先來簡單介紹一下網址 的組成結構

假設我們有以下3個網址

https://google.com/#q=express
http://www.bing.com/search?q=grunt&first=9
http://localhost:3000/about?test=1#history

接著我們把每一個網址 切開來看

part of urls

再來我們從左到右一個一個來看分別代表著什麼意思

####- 協定

協定負責決定請求的傳輸方式, 其他常見的協定包含 file, ftp

####- 主機

主機負責 識別伺服器, 在你的電腦(本機主機)或區域網路上的伺服器可能只是一個單字, 也可能是一個數值的IP位址

在網際網路上, 主機會以頂級網域名稱(TLD)結尾, 如.com.net

此外,主機名稱前面可能也會有 子網域, www 是很常見的子網域,

不過子網域可以是任何東西, 他是選用的

####- Port

每一個伺服器都有一群以數字代表的 port, 有一些 port 的號碼是 特殊的, 例如 80443

如果你省略掉 Port, 它就會假定 80 portHTTP, 443HTTPS

如果你不使用這兩個 port 的話, 就應該使用大於 1023 的port,

通常會使用容易記憶的號碼. ( 例如: 3000, 8080, 8088 )

####- Route

Route 通常是app 最在乎的部分, 採用 Route (路徑) 來識別網頁或著是app 的其他資源

####- Query String (查詢字串)

Query Sting 是一種選用的 (名稱/值)配對的集合.

Query String 是以問號(?) 開始, 且 (名稱/值)配對是以 & 分隔

(名稱/值) 都應該要是 URL編碼, Javascript 提供一種內建的功能可以做這件事情 encodeURIComponent

例如空格應該要以加號 (+) 來取代... etc

####- Fragment (or hash)

Fragment 不會被傳送至伺服器, 它完全提供瀏覽器來使用

通常出現在單頁應用程式(SPA) 或著是重度使用 AJAX 的應用程式, 利用 Fragment 來控制應用程式做一些效果

Fragment 最初的唯一目的是錨點 (anchor), 例如 () 來讓瀏覽器顯示特定的部分

Further Reading

6 Things You Should Know About Fragment URLs