概念
- URL: Uniform Resource Locator, 统一资源定位符
- URN: Uniform Resource Name, 统一资源名称
- URI: Uniform Resource Identifier, 统一资源标识符
URL 和 URN 被统称为 URI。
URL在网页地址中广泛使用,而URN却不为人们所熟知。这篇文章简单介绍一下URL的结构。
URL的基本结构
最基本的URL应该可以只由两部分组成,形如:scheme:
。
其中的scheme
是协议或方案,:
是必不可少的。
比如:mailto:
是一个邮件发送协议。在macOS上,在终端中执行:open mailto:
即可打开默认的邮件发送程序。
:
后面可以跟上由协议协议自定义的任意内容。但通常来说,是如下5个部分组成的结构:
scheme:[//authority]path[?query][#fragment]
scheme
协议authority
来源path
路径query
查询fragment
片段
除了协议以外,其它几个字段都可以省略。
这个结构是由 WWW 之父 Tim Lee 定义的。它影响了绝大多数URL协议的格式。将在接下来的小节中详细讨论。
HTTP中的URL的结构
以下是一个来自维基百科的URL示例:
userinfo host port
┌──┴────┐ ┌────┴────────┐ ┌┴┐
https://user:pass@www.example.com:123/forum/questions/?tag=networking&order=newest#top
└─┬─┘ └───────┬─────────────────────┘└─┬─────────────┘└──┬───────────────────────┘└┬─┘
scheme authority path query fragment
其中:
-
https
是协议(或方案),:
不属于它的一部分。 -
//user:pass@www.example.com:123
整体被称作authority
//
在HTTP中是必要部分user:pass
用户信息。分别是用户名和密码,由:
分开。后面跟上一个@
。用户信息现在基本已不再使用www.example.com
主机123
端口号,用:
将它和主机分开
-
/forum/questions/
即资源路径- 通常,以
/
结束代表目录,其它代表非目录 - 路径需要被转义(Path Escape)
- 通常,以
-
?tag=networking&order=newest
叫做查询- 注意:
?
属于它的一部分 ?
后面的部分是具体的查询参数对,参数对之间通常以&
连接(极少部分使用;
连接)- 每个参数对形如:
key=value
。可以只有key
,也可以只有key=
。key
可以重复 key
和value
两者都必须先 URL Encode
- 注意:
-
#top
片段片段用来指示子资源。这在网页上,通常被用来指示浏览器定位到
id
为top(本例中)
中元素上
未完待续
。。。