2月阅读周·HTTP权威指南:URL与资源之URL快捷方式篇

举报
叶一一 发表于 2025/02/23 15:28:10 2025/02/23
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解...

引言

HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。

《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。

这本书主要包括以下内容:

  • 第一部分描述了Web的基础构件与HTTP的核心技术
  • 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
  • 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
  • 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
  • 第五部分介绍了发布和传播Web内容的技巧。
  • 第六部分是一些很有用的参考附录,以及相关技术的教程。

URL与资源

URL就是因特网资源的标准化名称。URL指向一条电子信息片段,告诉你它们位于何处,以及如何与之进行交互。

URL快捷方式

相对URL

URL有两种方式:绝对的和相对的。到目前为止,我们只见过绝对URL。绝对URL中包含有访问资源所需的全部信息。

另一方面,相对URL是不完整的。要从相对URL中获取访问资源所需的全部信息,就必须相对于另一个,被称为其基础(base)的URL进行解析。

相对URL是URL的一种便捷缩略记法。如果你手工写过HTML的话,可能就会发现相对URL是多么便捷了。

例1-1是一个嵌入了相对URL的HTML文档实例。

<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.
</BODY>
</HTML>

例1-1是资源:

http://www.joes-hardware.com/tools.html

的HTML文档。

在这个HTML文档中有一个包含了URL ./hammers.html的超链接。这个URL看起来是不完整的,但实际上是个合法的相对URL。可以相对于它所在文档的URL对其进行解释;在这个例子中,就是相对于Joe的五金商店Web服务器的资源/tools. html。

使用缩略形式的相对URL语法,HTML的编写者就可以省略URL中的方案、主机和其他一些组件了。这些组件可以从它们所属资源的基础URL中推导出来。其他资源的URL也可以用这种缩略形式来表示。

在例1-1中,基础URL为:

http://www.joes-hardware.com/tools.html

用这个URL作为基础,可以推导出缺失的信息。我们知道资源名为./hammers.html,但并不知道方案或主机名是什么。通过这个基础URL,可以推导出方案为http,主机为www.joes-hardware.com。

相对URL只是URL的片段或一小部分。处理URL的应用程序(比如浏览器)要能够在相对和绝对URL之间进行转换。

还需要注意的是,相对URL为保持一组资源(比如一些HTML页面)的可移植性提供了一种便捷方式。如果使用的是相对URL,就可以在搬移一组文档的同时,仍然保持链接的有效性,因为相对URL都是相对于新基础进行解释的。这样就可以实现在其他服务器上提供镜像内容之类的功能了。

1、基础URL

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

  • 在资源中显式提供

有些资源会显式地指定基础URL。比如,HTML文档中可能会包含一个定义了基础URL的HTML标记<BASE>,通过它来转换那个HTML文档中的所有相对URL。

  • 没有基础URL

在某些情况下,没有基础URL。这通常意味着你有一个绝对URL;但有时可能只是一个不完整或损坏了的URL。

2、解析相对引用

前面我们介绍了URL的基本组件和语法。要将相对URL转换为一个绝对URL,下一步要做的就是将相对URL和基础URL划分成组件段。

实际上,这样只是在解析URL,但这种做法会将其划分成一个个组件,因此通常会称作分解(decomposing)URL。

这个算法将一个相对URL转换成了其绝对模式,之后就可以用它来引用资源了。这个算法最初是在RFC 1808中制定的,后来被合并到了RFC 2396中。

(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

自动扩展URL

有些浏览器会在用户提交URL之后,或者在用户输入的时候尝试着自动扩展URL。这就为用户提供了一条捷径:用户不需要输入完整的URL,因为浏览器会自动扩展。

这些“自动扩展”特性有以下两种方式。

1、主机名扩展

在主机名扩展中,只要有些小提示,浏览器通常就可以在没有帮助的情况下,将你输入的主机名扩展为完整的主机名。

比如,如果在地址栏中输入yahoo,浏览器就会自动在主机名中插入www.和.com,构建出www.yahoo.com。如果找不到与yahoo匹配的站点,有些浏览器会在放弃之前尝试几种扩展形式。浏览器通过这些简单的技巧来节省你的时间,减少找不到的可能。

但是,这些主机名扩展技巧可能会为其他一些HTTP应用程序带来问题,比如代理。第6章将详细讨论这些问题。

2、历史扩展

浏览器用来节省用户输入URL时间的另一种技巧是,将以前用户访问过的URL历史存储起来。当你输入URL时,它们就可以将你输入的URL与历史记录中URL的前缀进行匹配,并提供一些完整的选项供你选择。因此,如果你输入了一个以前访问过的URL的开始部分,比如http://www.joes-,浏览器就可能会建议使用http://www.joes-hardware.com。然后你就可以选择这个地址,不用输入完整的URL了。

总结

Web客户端可以理解并使用几种URL快捷方式。相对URL是在某资源内部指定一个资源的便捷缩略方式。很多浏览器还支持URL的“自动扩展”,也就是用户输入URL的一个关键(可记忆的)部分,然后由浏览器将其余部分填充起来。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。