網址有哪些部分?

在大多數情況下,您可以說「我購買了網域」或「我們的圖片託管在其他網站上」,即使這並非事實也沒關係。不過,在某些情況下,您需要更精確地指定。舉例來說,在處理 Cookie 時,您必須瞭解「網站」和「來源」的差異。

網址部分的名稱會在標準中指定,該標準也會定義 JavaScript API:

  • 網址標準定義了網址和相關概念,讓工程師能夠建構可互通的網路瀏覽器。
  • 標準的 URL API 元件會定義方法,提供對網址字串部分的存取權,例如配置來源

本文將說明 HTTP 或 HTTPS 網址字串中使用的各種術語。但不涵蓋其他類型的網址,例如檔案或資料網址。對於 hostorigin 等術語,準確的定義本身就很複雜,因此本文件僅提供示例和網址標準的連結,而非嘗試提供完整的說明。

您可以使用 JavaScript 取得網址 API 定義的網址元件名稱。例如:

let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);

網址分析儀

編輯下方的網址,瞭解網址字串的各個部分名稱。您也可以在url-parts.glitch.me 這個分頁中開啟這個網址。


以下依字母順序列出網址部分的名稱。

國家/地區代碼頂層網域 (ccTLD)

ISO 3166-1 國家/地區代碼清單中定義的頂層網域

  • https://example.org.au 的 ccTLD 為 au
  • https://example.io 的 ccTLD 為 io

網域名稱

以點號分隔的 HTTP 或 HTTPS 網址部分:配置文件後方所有內容,但不包含路徑連接埠 (如果有指定)。網域名稱的每個部分稱為標籤

網址 網域名稱
https://example.github.io/path example.github.io
https://support.example.org.au:443 support.example.org.au

有效頂層網域 (eTLD)

公開字尾清單中的項目,包括TLD 和(針對有多個部分的 eTLD) 以下的其他網域:第二層、第三層等等。

  • 例如:comcom.augithub.iosa.edu.auschools.nsw.edu.au

如上述範例所示,「公共後置字串」是可用於註冊網域的名稱。公開字尾清單是所有已知公開字尾的清單,且會經常更新。包括 ChromiumFirefox 在內的瀏覽器會在建構中使用此清單。

eTLD+1

請參閱「可註冊的網域」。

eTLD 加上前面的子網域。

  • 例如:example.comexample.org.auexample.github.ioexample.sa.edu.auexample.schools.nsw.edu.au

檔案名稱

這並未在網址標準中定義,也不屬於網址 API 的一部分,但通常用於指稱網址的最後一個非路徑部分,這通常是基於不正確的假設,即網址會直接對應至目錄結構。

舉例來說,如果使用 https://example.com/dir/file.htmlfile.html 可能會稱為檔案名稱。

瀏覽器也會使用檔案名稱值來命名下載的素材資源。舉例來說,https://example.com/images/image.jpg 通常會儲存在本機的 image.jpg 中。

片段

網址結尾的 # 字元後方,提供片段 ID 的字串。

  • 例如:網址 https://example.com/cats#tabby 的片段 ID 值為 tabby

包含 # 的部分稱為「雜湊」或錨點。你也可以連結至文字片段並醒目標示。

網址 API 而非片段會傳回雜湊。

完整網域名稱 (FQDN)

網站或伺服器的完整地址,對應至 IP 位址

網址 FQDN
https://example.com:1234/cats example.com
https://api.example.github.io api.example.github.io

網址的 FQDN 不包含通訊埠,即使使用非預設通訊埠也是如此。

井號 (或錨定標記)

在網址結尾處的 # 字元後方,提供片段 ID 的字串。(在某些情況下,這會稱為「錨點」。)

不含 # 的部分稱為「片段」。你也可以連結至文字片段並醒目標示。

網址 API 而非片段會傳回雜湊。

主機

網址標準所定義,主機可以是網域名稱、IPv4 位址、IPv6 位址、不透明主機或空白主機。

  • 網址標準的 host 定義不包含通訊埠
  • URL.host 會納入通訊埠,除非通訊埠是該配置的預設值。
  • URL.hostname 不含通訊埠。
網址 URL.host
https://www.example.com:443/cat www.example.com
// 443 is the default port for the scheme
https://www.example.com:1234/cat www.example.com:1234
https://cat.example.github.io cat.example.github.io

主機名稱

主機名稱是由 JavaScript URL API 定義,而非由網址標準定義。詳情請參閱「主機表示法」。

URL.hostname 會傳回主機,但不含通訊埠

網址 URL.hostname
https://www.example.com:443/cat www.example.com
https://www.example.com:1234/cat www.example.com
https://cat.example.github.io cat.example.github.io

來源

網址標準定義 origin,並連結至背景的 HTML 標準

針對 HTTP 或 HTTPS 網址,URL.origin 會傳回架構主機通訊埠 (除非通訊埠是架構的預設值)。

網址 URL.origin
https://www.example.com:443/cat https://www.example.com
https://www.example.com:1234/cat https://www.example.com:1234
https://cat.example.github.io https://cat.example.github.io

參數

請參閱「搜尋參數

密碼

請參閱「使用者名稱」。

路徑名稱

對於 HTTP 或 HTTPS 網址,是指網域和通訊埠 (如有定義) 後面的部分,包括filename (如有定義),但不包括搜尋字串分隔符

網址 URL.pathname
https://example.com [empty string]
https://example.com:8000/search?q=tabby /search
https://example.github.io/cat/pattern#tabby /cat/pattern
https://example.github.io/README.md /README.md

有時會使用「Path」來指稱不含檔案名稱的路徑名稱。例如,對於網址 https://example.com/cat/pattern/tabby.html,"path" 為 /cat/pattern

通訊埠

在網址中,用於標示網路通訊埠的 : 後方數字。例如:網址 https://example.com:1234/tabby 的通訊埠號碼為 1234。

通訊埠編號必須是 16 位元未簽署整數:換句話說,介於 0 和 65535 之間的整數 (含首尾)。

對於 HTTP 網址,預設通訊埠為 80;對於 HTTPS,預設通訊埠為 443。除非使用非預設通訊埠,否則網址不需要指定通訊埠號碼。

如果通訊埠是架構的預設值,API 會傳回空白字串。

網址 URL.port
https://example.com // empty string
https://example.com:443/foo // empty string: port is default for scheme
https://www.example.com:1234/foo 1234

通訊協定

scheme 後面接著 : (例如 http:https:)。

protocol 可透過 URL API 取得,但 scheme 則無法。

查詢 (或「查詢字串」)

網址中的「search」部分,不含開頭的 ?

可註冊的網域

  • 如果網址包含單一部分的 eTLD,例如 comorg (也就是與 TLD 對應的 eTLD),則網域和前面的第二層網域:例如 example.comexample.org
  • 如果網址含有兩部分的 eTLD,且只允許第三層註冊 (也就是公開尾碼清單中的項目,例如 com.augithub.io),則會顯示兩部分頂層網域 (「公開尾碼」) 和緊接在後的第三層網域名稱。例如 example.org.auexample.github.io
  • 如果是包含三個以上部分的 eTLD,則為 eTLD 和前面的網域。

架構

網址的一部分 (在 :// 之前),用於定義對網址發出要求時的網路通訊協定 (或使用者代理程式要採取的動作)。舉例來說,如果網址使用 https 配置,則應使用 HTTPS 通訊協定提出要求。如果網址的通訊協定 (例如 filemailtogit) 不對應到網路通訊協定,則行為取決於使用者代理程式。舉例來說,當使用者按一下 mailto 連結時,大多數瀏覽器會使用連結 href 網址中的值,開啟預設的電子郵件應用程式。

pathname後方,接續提供一個問號和一系列代表參數及其值的鍵/值組合。

網址 URL.search
https://example.com/cats?pattern=tabby&mood=bonkers ?pattern=tabby&mood=bonkers
https://example.com/cats:443?pattern=tabby ?pattern=tabby

query 或「查詢字串」是指沒有前置 ?search

另請參閱「搜尋參數」。

搜尋參數

參照在搜尋字串 (或「查詢字串」) 中傳遞的資料項目。

  • 例如:針對 https://example.com/cats?pattern=tabby&mood=bonkers,搜尋字串有兩個參數:pattern=tabbymood=bonkers

第二層網域

頂層網域前面的網域。

  • 以網址 https://www.example.com 為例,第二層網域為 example.com,是頂層網域 com子網域

  • 對於 https://example.org.au,頂層網域是 au,第二層網域是 org,第三層網域是 example。在這個範例中,org.auau 的子網域,而 example.org.au 則是 org.au 的子網域。

網站

網站是由 HTML 標準定義,以及同網站 (包含配置文件) 和無配置文件的同網站

網址標準或 JavaScript 網址 API 中未定義網站。

在這個情況下:

  • 如果 HTTP 或 HTTPS 網址含有單一部分的 eTLD (例如 https://example.com),該網站就包含 scheme、eTLD 和前面的標籤。例如:如果網址為 https://www.example.com/cat,則網站為 https://example.com。(對於這個網址,eTLD 與頂層網域相同)。
  • 對於 co.ukgithub.iosa.edu.au 等多部分 eTLD,"site" 包含 schemeeTLD 和前面的標籤。舉例來說,如果網址為 https://cat.example.co.uk/tabby,則網站為 https://example.co.uk,如果是 https://www.education.sa.gov.au,則網站為 https://education.sa.gov.au
網址 網站 (含配置和 eTLD+1)
https://cat.example.com/tabby ("https", "example.com")
https://cat.example.co.uk/tabby (「https」、「example.co.uk」)

origin不同,site 不包含port

子網域

位於較高層級網域中的網域。

如果網站的頂層網域只有一個部分,例如 comorg,則為頂層網域前面的部分,每個部分之間以點號分隔。

  • www.example.comexample.com 的子網域。
  • support.api.example.orgapi.example.org 的子網域,而 api.example.orgexample.org 的子網域。

對於只允許第三層註冊的兩部分 eTLD(即公開尾碼清單中的項目,例如 co.ukgithub.io),子網域是指網域名稱中該部分之前的部分。

  • 例如:cat.example.co.ukexample.co.uk 的子網域。

文字片段

一種片段,可連結至網頁中的一段文字,並醒目顯示該段文字。當使用者點選含有文字片段的連結時,瀏覽器會嘗試定位、捲動至網頁中的文字,並加以醒目顯示。

文字片段開頭為 :~:text=,後面接著搜尋字詞。

舉例來說,如要連結至這個網頁上出現的第一個「fragment」文字,請使用網址 https://web.dev/articles/url-parts#:~:text=fragment

進一步瞭解:文字片段

頂層網域 (TLD)

根區資料庫中列出的網域名稱,例如 comorg。部分頂層網域是國家/地區代碼頂層網域,例如 uktv

在描述 HTTP 或 HTTPS 網址的各個部分時,頂層網域是指最後一個點後面的網域名稱。

  • https://example.org 為例,網址的頂層網域為 org
  • https://example.org.au 為例,網址的頂層網域為 au,而 org 則是次級網域 (即使 org 也是頂層網域)。org.au 是兩個部分組成的 eTLD

eTLD公開字尾清單包含一個、兩個或更多部分的網域,因此 TLD 也可以是 eTLD。例如:

  • 對於 https://example.com,網址的 eTLD 是 com,也是頂層網域。

使用者名稱

您可以在網址開頭提供選用的使用者名稱和密碼,但基於安全考量,這項功能已淘汰,在許多情況下會遭到忽略。

舉例來說,如果使用 https://user123:password1@example.com,使用者名稱就是 user123。請注意,使用者名稱 (和密碼) 是純文字,並未加密。如果使用者名稱包含 :@ 符號,則必須分別將其網址編碼為 %3A%40


瞭解詳情