网址的组成部分有哪些?

Sam Dutton

在大多数情况下,您可以说“我购买了域名”或“我们的图片托管在其他网站上”,即使这并不是完全正确的。不过,在某些情况下,需要更精确的描述。例如,在处理 Cookie 时,您需要了解网站和来源之间的区别。

网址部分的名称在标准中指定,该标准还定义了 JavaScript API:

网址标准定义了网址和相关概念,以便工程师构建可互操作的网络浏览器。

该标准的 网址 API 组件定义了用于提供对网址字符串部分(例如 scheme 或 origin)的访问权限的方法。

本文档介绍了与 HTTP 或 HTTPS 网址字符串一起使用的一系列术语。本文档不涵盖文件网址或数据网址等其他类型的网址。对于 host 和 origin 等术语,准确的定义本身就很复杂,因此本文档提供了示例和指向网址标准的链接,而不是尝试进行完整说明。

您可以使用 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)位于其下方的其他域名:二级域名、三级域名等。

例如:com、com.au、github.io、sa.edu.au、schools.nsw.edu.au。

“公共后缀”(如这些示例)是指可用于注册域名的名称。公共后缀列表包含所有已知的公共后缀,并且会经常更新。包括 Chromium 和 Firefox 在内的浏览器会在其 build 中使用此列表。

注意:除了一级和二级 eTLD(例如 com、com.au 或 github.io)之外,公共后缀列表还包含三级、四级甚至五级 eTLD。

该列表还包括 github.io 和 glitch.me 等后缀。这些网域下的名称(例如 example.github.io 和 example.glitch.me)可用于网站托管,但不能由开发者“注册”。在这些示例中,GitHub 和 Glitch 充当注册商。

eTLD+1

请参阅可注册的域名。

eTLD 以及其前面的子网域。

例如:example.com、example.org.au、example.github.io、example.sa.edu.au、example.schools.nsw.edu.au。

文件名

未在网址标准中定义,也不属于网址 API,但通常用于指代网址的最后一个非路径部分,基于一个通常不正确的假设(即网址直接映射到目录结构)。

例如,对于 https://example.com/dir/file.html,file.html 可能被称为文件名。

如果下载了资源,浏览器还会使用文件名值为其命名。例如,https://example.com/images/image.jpg 通常会本地保存到 image.jpg。

Fragment

规范

网址末尾 # 字符后面的字符串,用于提供片段标识符。

例如:网址 https://example.com/cats#tabby 的片段标识符值为 tabby。

注意:向服务器发出 HTTP 请求时,系统不会传递 fragment 值。

包含 # 的部分称为 hash 或锚点。您还可以链接到文本片段并突出显示该片段。

哈希由网址 API 而非 fragment 返回。

完全限定域名 (FQDN)

网站或服务器的完整地址,会映射到 IP 地址。

网址

FQDN

https://example.com:1234/cats

example.com

https://api.example.github.io

api.example.github.io

网址的 FQDN 不包含端口,即使使用非默认端口也是如此。

哈希(或锚点)

规范

API

网址末尾 # 字符后面的字符串,用于提供片段标识符。在某些情境中,这被称为“锚点”。

除 # 之外的部分称为fragment。您还可以链接到文本片段并突出显示该片段。

哈希由网址 API 而非 fragment 返回。

主机

规范

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

主机名

规范

API

主机名由 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

来源

规范

API

网址标准定义了 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

参数

请参阅搜索参数

密码

规范

API

请参阅用户名。

路径名

规范

API

对于 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

“路径”有时用于指不含文件名的路径名。例如,对于网址 https://example.com/cat/pattern/tabby.html,“路径”为 /cat/pattern。

端口

规范

API

网址中 : 后面的数字,用于标识网络端口。例如,对于网址 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

协议

规范

API

架构后跟 :(例如 http: 或 https:)。

protocol 可通过网址 API 获取,但 scheme 不可用。

查询(或“查询字符串”)

规范

网址的搜索部分,不包括前面的 ?。

可注册的域名

对于包含单个部分 eTLD(例如 com 或 org,即与 TLD 对应的 eTLD)的网址,则为域名及其前面的二级域名:例如 example.com 或 example.org。

对于包含由两部分组成的 eTLD 且仅允许注册第三级域名的网址(即公共后缀列表中的条目,例如 com.au 和 github.io),请使用由两部分组成的顶级域名(“公共后缀”)以及紧随其后的第三级域名。例如:example.org.au 或 example.github.io。

对于包含三个或更多部分的 eTLD,请提供 eTLD 和前面的网域。

注意:令人困惑的是,example.github.io 或 example.glitch.me 等域名被定义为“可注册的域名”,但开发者无法对其进行“注册”。

GitHub 和 Glitch 充当这些示例的注册商。

方案

规范

API

网址的一部分(位于 :// 之前),用于定义向网址发出请求时使用的网络协议(或用户代理要执行的操作)。例如,应使用 HTTPS 协议向采用 https 架构的网址发出请求。对于对网址发出的请求,如果网址的架构(例如 file、mailto 或 git)与网络协议不符,则行为取决于用户代理。例如,当用户点击 mailto 链接时,大多数浏览器都会使用链接的 href 网址中的值打开默认的电子邮件应用。

搜索

规范

API

一个问号,后跟一系列键值对,表示参数及其值,在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。

另请参阅搜索参数。

搜索参数

规范

API

是指在搜索字符串(或“查询字符串”)中传递的数据项。

例如:对于 https://example.com/cats?pattern=tabby&mood=bonkers,搜索字符串有两个参数:pattern=tabby 和 mood=bonkers。

二级域名

位于顶级域名之前的域名。

对于网址 https://www.example.com,二级网域为 example.com,是顶级网域 com 的子网域。

对于 https://example.org.au,顶级网域是 au,二级网域是 org,三级网域是 example。在此示例中,org.au 是 au 的子网域,example.org.au 是 org.au 的子网域。

网站

规范

网站由 HTML 标准定义,以及同网站(包含协议)和无协议同网站。

网址标准或 JavaScript 网址 API 中未定义“网站”。

在这种情况下:

对于包含单部分 eTLD(例如 https://example.com)的 HTTP 或 HTTPS 网址,相应网站由 scheme、eTLD 和该 eTLD 之前的标签组成。例如,对于网址 https://www.example.com/cat,网站为 https://example.com。(对于此网址,eTLD 与顶级域名相同。)

对于多部分 eTLD(例如 co.uk、github.io 或 sa.edu.au),“网站”由 scheme、eTLD 和前面的标签组成。例如:对于网址 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。

注意:“网站”概念对于“同网站”非常重要,因为某些安全限制适用于被视为“同网站”的子网域,即使它们不是“同源”也是如此。

如需了解详情,请参阅了解“同网站”和“同源”。

子网域

更高级别网域中的网域。

对于顶级域名只有一个部分(例如 com 或 org)的网站,则为顶级域名之前的部分,每个部分之间用英文句点分隔。

www.example.com 是 example.com 的子网域。

support.api.example.org 是 api.example.org 的子网域,而 api.example.org 是 example.org 的子网域。

对于仅允许注册第三级域名的两部分 eTLD(即公共后缀列表中的条目,例如 co.uk 和 github.io),子网域是域名之前的部分。

例如:cat.example.co.uk 是 example.co.uk 的子网域。

文本片段

规范

API

一种fragment,可用于链接到网页中的一段文本并突出显示该文本。当用户点击包含文本片段的链接时,浏览器会尝试定位、滚动到并突出显示网页中的文本。

文本片段以 :~:text= 开头,后跟搜索字词。

例如,如需链接到此页面上“fragment”文本的首次出现,请使用网址 https://web.dev/articles/url-parts#:~:text=fragment。

了解详情:文本 fragment。

顶级域名 (TLD)

根区域数据库中列出的域名,例如 com 或 org。部分顶级域名是国家/地区代码顶级域名,例如 uk 和 tv。

在描述 HTTP 或 HTTPS 网址的各个部分时,顶级域名是指最后一个点后面的域名。

对于 https://example.org,网址的顶级域名为 org。

对于 https://example.org.au,网址的顶级域名为 au,org 是二级域名(即使 org 也是顶级域名)。org.au 是一个由两部分组成的 eTLD。

eTLD 的公共后缀列表包含包含一个、两个或更多部分的域名,因此顶级域名也可以是 eTLD。例如:

对于 https://example.com,网址的 eTLD 是 com,它也是一个 TLD。

用户名

规范

API

您可以在网址开头提供用户名和密码(可选),但出于安全考虑,此做法已废弃,在许多情况下会被忽略。

例如,对于 https://user123:password1@example.com,用户名为 user123。请注意,用户名(和密码!)是明文,未加密。

如果用户名包含 : 或 @ 符号,则必须分别将其网址编码为 %3A 和 %40。

了解详情

WHATWG:网址活跃标准

WHATWG:HTML Living Standard

网址 API

了解“同网站”和“同源”

RFC:统一资源定位符 (网址)

RFC:URI、网址和 URN

根区域数据库(顶级域名目录)

公共后缀列表(eTLDs 目录):“公共后缀是指由点连接的一组 DNS 名称或通配符。它表示域名中不受个人注册者控制的部分。”

ICANN 术语表

什么是完全限定域名?

您可以通过多少种方式对网址进行切片并为切片命名?

MDN 网页文档术语表

什么是网址?

网址的历史记录

Copyright © 2088 一键全脑游戏活动站 - 脑力挑战专属福利 All Rights Reserved.
友情链接