Page 64 - HTTP权威指南
P. 64
2. 解析相对引用
前面我们介绍了 URL 的基本组件和语法。要将相对 URL 转换为一个绝对 URL,下
一步要做的就是将相对 URL 和基础 URL 划分成组件段。
实际上,这样只是在解析 URL,但这种做法会将其划分成一个个组件,因此通常会
称作分解(decomposing)URL。只要将基础和相对 URL 划分成了组件,就可以应
用图 2-5 中的算法来完成转换了。
已解析好的相对URL:
{方案=x,用户=yđ...}
方案为空 所有组件都为空 非空方案
继承基础URL的方案 默认为基础URL URL是绝对的
检查用户、密码、
主机和端口组件
所有组件都为空
继承基础URL、用户、
密码、主机和端口
检查路径组件
带有前导“/”
路径为空 的非空路径
继承基础URL路径
没有前导“/” 检查参数组件 要处理绝对路径
的非空路径
从在处理的路径中删除
“./”和“<seg> /./” 参数为空 参数非空
继承基础URL参数
检查查询组件
查询为空 查询非空
继承基础URL查询
将继承的组件和相对组件组合成新的绝对URL
33 图 2-5 将相对 URL 转换成绝对 URL
这个算法将一个相对 URL 转换成了其绝对模式,之后就可以用它来引用资源了。这
个算法最初是在 RFC 1808 中制定的,后来被合并到了 RFC 2396 中。
可以对例 2-1 中的 ./hammers.html 实例使用图 2-5 中描述的算法。
36 | 第 2 章