2.3 URL 快捷方式

来源:互联网 发布:易酷cms包含漏洞维护 编辑:程序博客网 时间:2024/06/08 02:46

1. 相对URL

  • URL 有两种方式:绝对的和相对的。
  • 绝对 URL 中包含有访问资源所需的全部信息。
  • 相对 URL 是 URL 的一种便捷缩略记法,是不完整的。
  • 要从相对 URL 中获取访问资源所需的全部信息,就必须相对于另一个被称为其基础(base)的 URL 进行解析。
  • 比如HTML中写<a href="./hammers.html"></a> ,基础URL为 http://www.joes-hardware.com/tools.html ,相对URL为./hammers.html,根据基础URL可以解析出它的完整URL为 http://www.joes-hardware.com/hammers.html 。
    这里写图片描述
  • 相对 URL 只是 URL 的片段或一小部分。处理 URL 的应用程序(比如浏览器)要能够在相对和绝对 URL 之间进行转换。

1. 基础URL

  • 转换处理的第一步就是找到基础 URL。基础 URL 是作为相对 URL 的参考点使用的。可以来自以下几个不同的地方:
    • 在资源中显式提供
      有些资源会显式地指定基础 URL。比如,HTML 文档中可能会包含一个定义了基础 URL 的 HTML 标记 ,通过它来转换那个 HTML 文档中的所有相对 URL。
    • 封装资源的基础 URL
      如果在一个没有显式指定基础 URL 的资源中发现了一个相对 URL,可以将它所属资源的 URL 作为基础。
    • 没有基础 URL
      在某些情况下,没有基础 URL。这通常意味着你有一个绝对 URL;但有时可能只是一个不完整或损坏了的 URL。

2. 解析相对URL

  • 将相对URL转换为绝对URL,以下算法最初是在 RFC 1808 中制定的,后来被合并到了 RFC 2396 中:
    这里写图片描述
  • 以上述./hammers.html相对URL为例:
    1. 路径为 ./hammers.html,基础 URL 为 http://www.joes-hardware.com/tools.html。
    2. 方案为空,沿着图表的左半边向下处理,继承基础 URL 方案(HTTP)。
    3. 至少一个组件非空,一直处理到底端,继承主机和端口组件。
    4. 将来自相对 URL(路径:./hammers.html)的组件与我们继承来的组件(方案:http, 主机:www.joes-hardware.com, 端口:80) 合并起来,得到新的绝对 URL: http://www.joes-hardware.com/hammers.html。

2. 自动扩展URL

  • 有些浏览器会在用户提交 URL 之后,或者在用户输入的时候尝试着自动扩展 URL。这就为用户提供了一条捷径:用户不需要输入完整的 URL,因为浏览器会自动扩展。有以下两种方式:
    • 主机名扩展
      在主机名扩展中,只要有些小提示,浏览器通常就可以在没有帮助的情况下,将你输入的主机名扩展为完整的主机名。但是,这些主机名扩展技巧可能会为其他一些 HTTP 应用程序带来问题,比如代理。
    • 历史扩展
      浏览器用来节省用户输入 URL 时间的另一种技巧是,将以前用户访问过的 URL 历史存储起来。当你输入 URL 时,它们就可以将你输入的 URL 与历史记录中 URL 的前缀进行匹配,并提供一些完整的选项供你选择。
  • 注意,与代理共同使用时,URL 自动扩展的行为可能会有所不同。