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 earth
</p>
</BODY>
</HTML>

其中,基础URL为:http://www.joes-hardware.com/tools.html

资源./hammers.html即相对的URL,它被解析为:基础URL+相对URL(后面有讲具体的解析规则),

即http://www.joes-hardware.com/hammers.html

基础URL

转换处理的第一步就是找到基础URL. 基础URL是相对论URL的参考点. 基础URL可以来自以下几个不同的地方

  • 在资源中显式提供

    有些资源会显式指定基础课URL, 如, html中可以用标记<BASE>, 通过它来转换那个HTML文档中的所有相对URL

  • 封闭资源的基础URL

    如果在一个没有显式指定基础URL的资源中发现一个相对URL, 可以将它所属的资源的URL作为基础

  • 没有基础URL

    如果没有基础的URL, 这通常意味着你有一个绝对的URL,但有时可能只是一个不完整或损坏的URL

解析相对引用

要将一个相对URL转换为绝对URL,要将其先划分为一个个组件. 把URL划分为组件后,就可以用以下的算法完成转换了(图处来自《HTTP权威指南》)

我们对上面的./hammers.html使用图中描述的算法

    1. 路径为./hammers.html, 基础URL为http://www.joes-hardware.com/tools.html
    2. 方案(scheme)为空,沿着图左边处理,继承基础URL方案
    3. 至少一个组件非空,一直处理到底端,继承主机和端口组件
    4. 将来自相对URL(路径:./harmers.html)的组件与继承的组件合并,得到新的绝对URL:http://ww.joes-hardware.com/hammers.html

最新文章

  1. PARENT VIEW INVALIDATE
  2. 在map中根据value获取key
  3. C++流格式控制符的使用【来自网络】
  4. An endpoint configuration section for contract &quot;serviceReferenc.service&quot; could not be loaded
  5. 用maven骨架生成项目速度慢的问题
  6. Oracle 11g 环境,使用utl_smtp创建一个存储过程来发送邮件
  7. 一个可以直接使用的MsgBox基于form居中API
  8. UVa10723 - Cyborg Genes
  9. Vue.js-05:第五章 - 计算属性与监听器
  10. [日常] imap协议读取邮件
  11. php实现多进程和关闭进程
  12. 连接HTTP服务器
  13. fiddler电脑抓包和手机抓包
  14. css单位分析、颜色设置与调色板
  15. 用老毛桃U盘安装:[3]Ghost版Win7系统
  16. Flask系列07--Flask中的CBV, 蓝图的CBV
  17. RocketMQ 概述
  18. C#开发Unity游戏教程之游戏对象的行为逻辑方法
  19. Mysql导入大容量SQL文件数据问题
  20. 关于div一侧固定,另一侧自适应

热门文章

  1. C# 检测网络链接
  2. 和小猪一起搞微信公众号开发—获取Access_token
  3. 判断子元素(or属性)是否存在
  4. ionic build --release android
  5. java基础之 溢出
  6. 今年plan,做好四件事情
  7. C语言中的getchar和putchar详解
  8. Chrome 应用推荐 - 下载管理扩展: Chrono
  9. poj1458
  10. treap模版代码