HTTP学习(一) URL之相对定位解析为绝对定位

原创
2017/11/12 17:22
阅读数 662

一、URL与资源的关系

    URL(Unifrom Resource Lokator)统一资源定位符,它用来标识一个位于网络上的唯一资源的位置,以标准的http协议下请求为例:

http://  www.baidu.com /s ?ie=utf-8
http://  方案组件 ,标识当前的访问时使用何种协议 ,它必须以字母开头,通过“:“”与其余部分分割

 www.baidu.com   主机组件,标识指向的主机域名或ip 

省略了端口组件,在http写一下默认80端口

/s  资源路径,标识了该资源在指定主机下的访问路径

?ie=utf-8  查询组件,也就是通常讲的查询参数

通过一系列的组件叠加在一起,就能标识出需要请求的资源,然后由服务器做出响应

二、绝对定位和相对定位

    绝对定位指的是从方案组件开始,至少拥有方案、主机、端口、路径,组成了一条唯一的指向。绝对定位已经满足了我们请求到唯一资源的需求,那相对定位又是什么呢?或者说,相对定位的用处是什么?

    相对定位指的是缺失部分组件,但是可以通过基础URL组合成绝对定位的URL。

    通过几个例子列举相对URL的情境:

当前url是  http://  www.baidu.com /zhidao/aaa?query=1234

    1.   ./bbb

    组合为绝对URL后为 http://  www.baidu.com /zhidao/bbb

    2.   ?query =111

      组合为绝对URL后为 http://  www.baidu.com /zhidao/aaa?query=111

    3.  空

       是的空 就重新访问当前基础路径

    4. # 

        同样是访问当前基础路径

    5. /bbb

      组合为绝对URL后为 http://  www.baidu.com /bbb

    这里只列出了比较常见的情况,通过例子总结下浏览器对相对路径的解析算法:

        首先浏览器是按照组件来拆分整个相对路径的,当方案组件和主机组件为空时,将基础URL的方案组件和主机组件拼接给新的URL。

        之后检查路径组件,这里分了几种情况:

  • 路径组件不为空,检查是否有/引导符,如果有说明这是一个完整的路径组件,直接将相对URL拼接到新URL上
  • 路径组件不为空,但包含了 ./ 或 ../等需处理部分,则删除处理部分,按照处理逻辑拼接基础URL和相对URL,然后拼接到新URL上
  • 路径组件为空,检查查询组件是否为空,不为空则拼接基础URL路径部分和相对URL查询部分组成新URL
  • 路径和查询组件都为空,有分段组件拼接分段组件,没有直接使用基础URL为新URL

基本的解析路径是这几种,这里有个特殊情况就是分段组件,分段组件指的是由#分割的部分,这部分并不会真正的整合到URL中发送给服务器进行资源定位,而是用于浏览器取得服务器响应后根据分段组件跳转到所选定区域,所以相对URL输入#或为空时,请求结果是一致的.

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部