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 章
   59   60   61   62   63   64   65   66   67   68   69