[SSP]HTTP权威指南——URL

来源:互联网 发布:淘宝九牧王卫浴保真吗 编辑:程序博客网 时间:2024/05/07 15:25

我们每天都会用到URL,下面是URL的标准语法

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag> 


对于URL的语法,之前在计算机网络有看过一些资料,所以这里不再赘述,主要说自己感兴趣的

相对URL

有相对URL,那么就肯定有绝对URL啦

绝对URL是完整的,例如:https://www.google.com/

相对URL是不完整的,例如:./hammers.html

使用相对URL的一个好处就是可以保持一组资源(例如一组HTML页面)的可移植性,使用相对URL的时候,可以在搬运一组文档的同时,不会破坏链接的有效性,因为相对URL都是基于基础URL进行解析的。

<HTML><HEAD><TITLE>Joe's Tools</TITLE></HEAD><BODY><H1>Tools Page</H1><H2>Hammers</H2><P>Joe's Hardware Online has the largest selection of <A HREF="./hammers.html">hammers</A> on the earth.</P><H2><A NAME=drills></A>Drills</H2><P>Joe's Hardware has a complete line of cordless and corded drills,as well as the latest in plutonium-powered atomic drills, for thosebig around the house jobs.</P> ...</BODY></HTML>

这段代码是www.joes-hardware.com/tools.html的源码,其中hammers便是一个相对URL链接。

访问相对URL需要使用基础URL进行解析

将相对URL转换为绝对URL的第一步就是找到基础URL

基础URL可以来自下面几个地方:

  • 资源中显式提供 使用<BASE>标签进行提供
  • 封装资源的基础URL,上面的代码中并没有显示指出基础URL,这时候就可以使用它所属资源的URL作为基础URL(后面有例子)
  • 没有基础URL 这时你要么是有一个绝对URL要么就是只是一个不完整的或者顺坏的URL
拿到基础URL之后,就是要装相对URL转换为绝对URL啦
转换的过程就是将基础URL和相对URL进行划分操作,划分为URL语法中的各个组件,然后再按照一定的算法进行组装,下面是转换的算法

算法首先将URL进行拆分
第一个分支是根据相对URL的组件来进行划分
第一个分支是没有方案、第二个是所有组件都空(那么直接就是基础URL)、第三个是方案非空(此时URL是绝对的)
在方案为空的情况下:
如果相对URL的所有组件都空,那么走算法左边的路,如果不是非空,那么走右边的,直接去到最后一步
下面以上面的代码例子简单说下这个算法的一个转换过程:
  1. 路径为 ./hammers.html , 基础URL为www.joes-hardware.com/tools.html
  2. 方案为空,所以沿着图标的左半边向下处理,继承基础URL方案(HTTP)
  3. 相对URL有一个组件不为空,直接去到最后一步,继承主机和端口组件
  4. 将来自相对URL的组件(路径:./hammers.html)和继承来的组件(方案:HTTP 主机:www.joes-hardware.com 端口:80)合并起来,得到新的绝对URL http://www.joes-hardware.com/hammers.html


原创粉丝点击