使用相对url,可以引用同一服务器的其它资源,相对url缺失的部分,由发起引用的那个url自身的信息补齐。如果url字符串不是以一个有效的协议名开始,后面没有跟着冒号,又或者没有那个有效的“//”分隔符,那该url就是一个需要被引用的相对url。
相对url大体大体可以分为5种情况,其解析规则如下:
(1)有协议名称,但没有域名信息
对于这种形式的url,它的协议,路径,查询字符串和片段ID都以它自身为准,但域名信息的部分,以引用它的那个页面地址为准。
(2)没有协议名,但有域名信息
在这种情况下,协议名称由原发起页面确定,而所有接下来的url信息都取自这个相对url,构成完整的url。
(3)没有协议名,没有域名信息,但有路径
这种情况下分为两种结果,如果相对url的开头不是斜杠,则相对路径会拼接在引用url最右边的“/”后面,如果最右边是文件名,则要砍掉文件名。另外如果相对url的开头确实是个斜杠,则应该忽略引用页面自身的路径信息,直接把相对路径拼在引用url的域名后面。
(4)没有协议名,没有域名信息,没有路径,但有查询字符串
这种情况下,协议,域名,路径信息全部原封不动的从原引用url复制过来,查询字符串和片段ID则来自相对url。
(5)只有片段ID
只替换片段ID的部分,其他所有信息全部原封不动的从原引用url复制过来。