http 权威指南中关于 URL 与资源 章节的总结学习。
HTTP 权威指南
第二章 URL 与资源
2.1 浏览因特网资源
URI 是一个通用的概念,有两个子集: URL 与 URN 组成。URL 是通过描述资源的位置来标识资源的,而 URN 是通过名字来识别资源的,与它们当前所处的位置无关。
URL 分以下三个部分:
示例 http://www.baidu.com/index.html
- URL 的第一部分(http)是 URL 方案(scheme)。方案告知 Web 客户端怎样访问资源。此例中,URL 说明要使用 HTTP 协议
- 第二部分(www.baidu.com) 指的是服务器的位置。这部分告知 Web 客户端资源位于何处
- 第三部分(/index.html)是资源路径。路径说明了请求的是服务器上哪个特定的本地资源。
也就是 “方案://服务器位置/路径”结构。(大多数)
2.2 URL 的语法
大多数都由以下九部分构成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
最重要的三部分是 方案(scheme) 、 主机(host)和路径(path)
通用 URL 组件
组件 | 描述 | 默认值 | 示例 |
---|---|---|---|
方案 | 访问服务器以获取资源时要使用哪种协议 | 无 | http |
用户名 | 某些方案访问资源时需要的用户名 | anonymous(匿名) | ftp://anonymous:my_pw@ftp.prp.edu/pub/gnu |
密码 | 用户名后面可能要包含密码,以 : 区分 |
如上的 my_pw | |
主机 | 资源宿主服务器的主机名或点分 IP 地址 | 无 | |
端口 | 资源宿主服务器正在监听的端口号。http 默认 80 | 每个方案特有 | |
路径 | 服务器上资源的本地名,有一个斜杠将其与前面的URL 组件分隔开。 | 无 | |
参数 | 某些方案会用这个组件来指定输入参数,相互之间以; 分隔 |
无 | |
查询 | 某些方案会用这个组件传递参数以激活应用程序。用字符? 将其与其他 URL 部分分隔开。键值对形式。每个查询之间以 & 分隔。 |
无 | http://www.hdware.com/invetory?item=123&color=red |
片段 | 一小片或一部分资源的名称。挂在 URL 的右手边,最前面有一个 # |
无 | http://www.hdware.com/tools.html#drills |
2.3 URL 快捷方式
相对 URL 是在某资源内部制定一个资源的便捷缩略方式。自动扩展 URL 是用户输入 RUL 的一个关键(可记忆的)部分,然后由浏览器将其余部分填充起来。
2.3.1 相对 URL
URL 有两种方式:绝对的和相对的。
相对 URL 是不完整的。要从相对 URL 中获取访问资源所需的全部信息,就必须相对于另一个被称为其 基础 (base)的 URL 进行解析。
http://www.hdware.com/index.html 的资源:
<!-- other part -->
<a href="./about.html">关于我们</a>
<!-- other part -->
这个 URL ./about.html
,就是相对 URL.
基础 URL 就是 http://www.hdware.com/index.html
,推导出的绝对 URL为:
http://www.hdware.com/about.html
.
基础 URL 来自以下几个不同的地方:
- 在资源中显式提供。 如 HTML 标记
- 封装资源的基础 URL。如上例
- 没有基础 URL。通常意味着有一个绝对 URL。
2.3.2 自动扩展 URL
有两种方式:
- 主机名扩展
- 历史扩展
2.4 令人头疼的字符
URL 是可移植的。
URL 还得是 完整的。
本节总结URL 的通用字母表和编码规则。
2.4.1 URL 字符集
使用 US-ASCII 字符集,使用7位二进制码来表示字符。 并且将 转义序列
集成进去。
2.4.2 编码机制
为了避开安全字符集表示法带来的限制,人们设计了一种编码机制,用来在 URL 中表示各种不安全的字符。编码机制就是通过一种“转义”表示法来表示不安全字符的。这种转义表示法包含一个百分号(%),后面跟着两个便是字符 ASCII 码的十六进制数。
例子:🌰
字符 | ASCII 码 | 示例 URL |
---|---|---|
~ | 126(0x7E) | http://www.hdware.com/%7Ejoe |
空格 | 32(0x20) | http://www.hdware.com/more%20tools.html |
% | 37(0x25) | http://www.hdeare.com/100%25satis.html |
2.4.3 字符限制
URL 中,有几个字符被保留起来,有着特殊的含义。
下表列出了一些字符,在将其用于保留用途之外的场合时,要在 URL 中对其进行编码。
TODO
2.5 方案的世界
常见的方案格式:
TODO