在大多数情况下,即使“我购买了域名”或“我们的图片托管在其他网站上”等说法并不完全正确,也可以使用。不过,在某些情况下,需要更精确的定位。例如,在处理 Cookie 时,您需要了解网站和源之间的区别。
网址部分的名称是在标准中指定的,该标准还定义了 JavaScript API:
本文档介绍了 HTTP 或 HTTPS 网址字符串中使用的一系列术语。它不涵盖其他类型的网址,例如文件网址或数据网址。对于 host 和 origin 等术语,准确的定义本身就很复杂,因此本文档提供了示例和指向网址标准的链接,而不是试图提供完整的解释。
您可以使用 JavaScript 获取由网址 API 定义的网址组成部分的名称。例如:
let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);
网址分析器
修改以下网址,了解如何命名网址字符串的各个部分。 您也可以在单独的标签页中打开此页面,网址为 https://chrome.dev/url-parts/。
网址部分的名称按字母顺序列出如下。
国家/地区代码顶级网域 (ccTLD)
域名
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+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的 fragment 标识符值为tabby。
包含 # 的部分称为哈希或锚点。您还可以链接到并突出显示文本片段。
哈希由网址 API 返回,而不是由 fragment 返回。
完全限定域名 (FQDN)
网站或服务器的完整地址,映射到 IP 地址。
| 网址 | FQDN |
|---|---|
| https://example.com:1234/cats | example.com |
| https://api.example.github.io | api.example.github.io |
网址的 FQDN 不包含端口,即使使用的是非默认端口也是如此。
哈希(或锚点)
网址末尾的 # 字符后面的字符串,用于提供片段标识符。(在某些情况下,这称为“锚点”。)
不含 # 的部分称为片段。
您还可以链接到并突出显示文本片段。
哈希由网址 API 返回,而不是由 fragment 返回。
主机
根据 网址 标准中的定义,主机可以是域名、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 |
“路径”有时用于指不包含文件名的路径名。例如,对于网址 https://example.com/cat/pattern/tabby.html,“路径”为 /cat/pattern。
端口
网址中 : 后面的数字,用于标识网络端口。例如,对于网址 https://example.com:1234/tabby,端口号为 1234。
端口号必须是 16 位无符号整数,也就是说,介于 0 到 65535 之间的整数(含 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 |
协议
方案,后跟 :(例如 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 和之前的网域。
方案
网址中定义向网址发出请求时所用网络协议(或用户代理要采取的操作)的部分(位于 :// 之前)。例如,对采用 https 方案的网址的请求应使用 HTTPS 协议。对于方案为 file、mailto 或 git 等不对应于网络协议的网址的请求,行为取决于用户代理。例如,当用户点击 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=tabby和mood=bonkers。
二级域名
顶级网域之前的网域。
对于网址
https://www.example.com,二级网域是顶级网域com的子网域example.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 和之前的标签组成。例如,对于网址https://www.example.com/cat,相应网站为https://example.com。(对于此网址,eTLD 与顶级域名相同。) - 对于
co.uk、github.io或sa.edu.au等多部分 eTLD,“网站”由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”) |
子网域
更高级别网域内的网域。
对于具有单部分顶级网域(例如 com 或 org)的网站,顶级网域之前的部分(以英文句点分隔)。
www.example.com是example.com的子网域。support.api.example.org是api.example.org的子网域,而api.example.org是example.org的子网域。
对于只允许进行三级注册的两部分 eTLD(即公共后缀列表中的条目,例如 co.uk 和 github.io),子网域是域名中位于该 eTLD 之前的部分。
- 例如:
cat.example.co.uk是example.co.uk的子网域。
文本片段
一种片段,可用于链接到网页中的一段文字并突出显示该文字。当用户访问包含文本片段的链接时,浏览器会尝试在网页中查找、滚动到并突出显示相应文本。
文本片段以 :~:text= 开头,后跟搜索字词。
例如,如需链接到此网页上首次出现的“fragment”文本,请使用网址 https://web.dev/articles/url-parts#:~:text=fragment。
了解详情:文本片段。
顶级域名 (TLD)
根区域数据库中列出的域名,例如 com 或 org。部分顶级网域是国家/地区代码顶级网域,例如 uk 和 tv。
在描述 HTTP 或 HTTPS 网址的各个部分时,TLD 是最后一个点后面的域名。
- 对于
https://example.org,相应网址的顶级网域是org。 - 对于
https://example.org.au,相应网址的顶级网域是au,而org是二级网域(即使org也是顶级网域)。org.au是一个由两部分组成的 eTLD。
eTLD 的公共后缀列表包含一个、两个或更多部分的域名,因此 TLD 也可以是 eTLD。例如:
- 对于
https://example.com,相应网址的 eTLD 为com,这也是一个 TLD。
用户名
可以在网址开头提供可选的用户名和密码,但出于安全考虑,此做法已被弃用,并且在许多情况下会被忽略。
例如,如果电子邮件地址为 https://user123:password1@example.com,则用户名为 user123。请注意,用户名(和密码!)以纯文本形式显示,未加密。
如果用户名包含 : 或 @ 符号,则必须分别进行网址编码,转换为 %3A 和 %40。
了解详情
- WHATWG:网址实时标准
- WHATWG:HTML Living Standard
- 网址 API
- 了解“同网站”和“同源”
- RFC:统一资源定位符 (网址)
- RFC:URI、网址和 URN
- 根区域数据库(顶级网域目录)
- 公共后缀列表(eTLDs 目录):“公共后缀是一组以英文句点连接的 DNS 名称或通配符。它表示域名中不受个人注册者控制的部分。
- ICANN 术语表
- 什么是完全限定域名?
- 您可以通过多少种方式对网址进行切分并命名切分后的各个部分?
- MDN Web 文档术语表
- 什么是网址?
- 网址的历史记录