HTTP之URL的快捷方式
URL快捷方式
==================摘自《HTTP权威指南》=======================
WEB客户端可以理解并使用几种URL快捷方式。相对URL是在某职员内部指定一个资源的快捷缩略方式。很多浏览器还支持URL的“自动扩展”也就是用户输入URL的一个关键部分,然后由浏览器将其余部分填充起来。
1、 相对URL
URL有两种方式:绝对URL和相对URL。绝对URL中包含有访问资源所需的全部信息。另一方面,相对URL是不完整的。要从相对URL中获取访问资源所需的全部信息,就必须相对于另一个,被称为基础(base)的URL进行解析。
相对URL是URL的一种便捷缩略记法。如果你收工写过HTML的话,可能就会发现相对URL是多么便捷了。例2-1是一个嵌入了相对URL的HTML文档实例。
例2-1是资源:
http://www.joes-hardware.com/tools.html 的HTML文档。
在这个HTML文档中有一个包含了URL ./hammer.html的超级链接。这个URL看起来并不完整的,但实际上是个合法的相对URL。可以相对于它所在文档的URL对其进行解释。在这个例子中,就是相对于Joe的五金商店Web服务器的资源/tools.html.
使用缩略形式的相对URL语法,HTML的编写者可以省略URL中的方案、主机和其他一些组件了。这些组件可以从他们所属资源的基础URL中推导出来。其他资源的URL也可以使用这种缩略形式来表示。
在例2-1,基础URL为:
http://www.joes-hardware.com/tools.html
用这个URL作为基础,可以推导出缺失的信息。我们知道资源名为./hammer.html,但并不知道方案和主机名是多少。通过这个基础的URL,可以推导出方案为http,主机名为www.joes-hardware.com。下图展示了相对URL通过基础URL推导出绝对URL:
相对URL只是URL的片段或者一小部分。处理URL的应用程序(比如浏览器)要能够在相对URL和绝对URL之间进行转换。
还需要注意的是,相对URL为保持一组资源的(比如一些HTML页面)便携性提供了一种便捷方式。如果使用的是相对URL,就可以在搬移一组文档的同时,仍然保持连接的有效性。因为相对URL都是基于新基础进行解释的。这样就可以实现在其他服务器上提供镜像内容之类的功能。
(1)、基础URL
转换处理的第一步就是找到基础URL,基础URL作为相对URL的参考点使用的,可以来自以下几个不同的地方。
a、在资源中显示提供
有些资源会显示的指定基础URL。比如html文档中可能包含了一个定义基础URL的HTML标记<BASE>,通过它来转换那个HTML文档中的所有相对URL。
b、封装资源的基础URL
如果在一个没有显示指定基础URL的资源中发现了一个相对URL,可以将它所属资源的URL作为基础。
c、没有基础URL
在某些情况下,没有基础URL。这通常意味着你有一个相对URL,但有时可能只是一个不完整或损坏的URL。
(2)、解析相对引用
前面我们介绍了URL的基础组件和语法。要将相对URL转换为一个绝对URL,下一步要做的就是将相对URL和基础URL划分成组件段。
实际上这样只是在解析URL,但这种做法会将其划分成一个个组件,因此通常会称作分解(decomposing)URL。只要将基础和相对URL划分成了组件,就可以应用图2-5中的算法来完成转换了。
这个算法将一个相对URL转换成其绝对模式,之后就可以用它来应用资源了。
使用图2-5中的算法将例2-1中的相对./hammer.html转换成绝对URL。
a、 路径为./hammer.html,基础URL为http://www.joes-hardware.com/tools.html
b、 方案为空,沿着图表的左半边向下处理,继承基础URL方案
c、 至少一个组件为空,一直处理到底端,继承主机和端口组件
d、 将来自相对URL(路径./hammer.html)组件与我们继承来的组件(方案:http,主机:www.joes-hardware.com,端口:80)合并起来,得到新的绝对URL:http://www.joes-hardware.com/hammershtml
2、自动扩展URL
有些浏览器会在用户提交URL之后,或者在用户输入的时候尝试着自动扩展URL。这就是为用户提供了一条捷径:用户不需要输入完整的URL,因为浏览器会自动扩展。
这些“自动扩展”特性有一下两种方式
(1)、主机名扩展
在主机名扩展中,只要有些小提示,浏览器通常可以在没有帮助的情况下,将你的主机名扩展为完整的主机名。比如,你的地址栏输入yahoo,浏览器会自动在主机名中插入www和.com,构建出www.yahoo.com。如果找不到与yahoo匹配的站点,有些浏览器会放弃之前尝试的几种扩展形式。浏览器通过这些简单的技巧来节省你的时间,减少找不到的可能。
(2)、历史扩展
浏览器用来节省用户输入URL时间的另一种技巧是,将以前用户访问过的URL历史存储起来。当你输入URL时,它们就可以将你输入的URL与历史记录在中URL的前缀进行匹配,并提供一些完整的选项供你选择。因此,如果你输入了一个以前访问过的URL的开始部分,比如http://www.joes-,浏览器就可能会建议使用 http://www.joes-hardware.com。 然后你就可以选择这个地址,不用输入完整的URL。
HTTP之URL的快捷方式的更多相关文章
- Delphi 创建一个url网址快捷方式代码
procedure CreateURLShortcut(const ShortcutFile, URL: string); var F: TextFile; // text file begin {$ ...
- http协议进阶(二)URL与资源
一.URL的语法 URL是互联网资源的标准化名称 URL提供了一种定位互联网上任意资源的手段,但这些资源要通过不同方案(协议:比如http.ftp.smtp)来访问,因此URL语法会略有差异 大部分 ...
- Asp.Net MVC<四>:路由器
路由的核心类型基本定义于System.Web.dll中,路由机制同样可应用与Web Forms,实现请求地址和物理文件的分离. web form中使用路由器的示例 路由配置 protected voi ...
- WinSCP安装与使用
WinSCP 是一个 Windows 环境下使用的 SSH(Source Shell)的开源图形化 SFTP(SSH File Transfer Protocol) 客户端.同时支持 SCP(So ...
- 《http权威指南》读书笔记2
概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...
- 开源SFTP客户端 WinSCP v5.13.5 Build 8967 绿色便携版
下载地址:点我 基本介绍 WinSCP 是一款可以在微软 Windows 系统环境下使用的支持 SSH 命令的开源图形化 SFTP 客户端工具.同时也支持 SCP 文件传输协议,它的主要功能是在本地与 ...
- RedHat OpenShift QuickStart 1.1 OpenShift基础
openshift 提供了命令行工具和web可视化页面,这些工具通过REST API去和openshift交互 一.开始为开发人员使用OpenShift 1. 探索命令行 2. 探索web conso ...
- ahk精简自用
;9:03 2022/8/20 自用 #NoEnv #Warn #SingleInstance Force ;设工作目录为桌面 SetWorkingDir %A_Desktop% ;托盘提示必须放在热 ...
- ahk_more
;20:47 2022/5/8 #NoEnv #Warn #SingleInstance Force ;设工作目录为桌面 SetWorkingDir %A_Desktop% ;托盘提示必须放在热键前面 ...
随机推荐
- 深入理解TCP/IP应用层
TCP/IP四层模型分为: 应用层,传输层(只关注起点(发送者)和终点(接收者)),网络层(规划出一条或几条路线),数据链路层(关注两个相邻点之间怎么传输) 协议 应用层 DNS,URI,HT ...
- C# WinForm自定义通用分页控件
大家好,前几天因工作需要要开发一个基于WinForm的小程序.其中要用到分页,最开始的想法找个第三方的dll用一下,但是后来想了想觉得不如自己写一个玩一下 之前的web开发中有各式各样的列表组件基本都 ...
- Java面试复习(纯手打)
1.面向对象和面向过程的区别: 面向过程比面向对象高.因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素得时候,比如单片机.嵌入式开发.Linux/Unix等一般采用面向过 ...
- affine_trans_pixel 和 affine_trans_point_2d的区别
affine_trans_pixel 和 affine_trans_point_2d的不同在于所使用的坐标系原点不同,affine_trans_pixel 使用的是像素坐标系, 即原点位于图像的左上角 ...
- Android源码分析(一)-----如何快速掌握Android编译文件
一 : Android.mk文件概述 主要向编译系统指定相应的编译规则.会被解析一次或多次.因此尽量减少源码中声明变量,因为这些变量可能会被多次定义从而影响到后面的解析.这个文件的语法会把源代码组织成 ...
- 一个简单servlet容器
一个简单servlet容器 2.1 javax.servlet.Servlet接口 Servlet编程需要使用javax.servlet和javax.servlet.http两个包下的接口和类 在所有 ...
- Python语言基础04-构造程序逻辑
本文收录在Python从入门到精通系列文章系列 学完前面的几个章节后,博主觉得有必要在这里带大家做一些练习来巩固之前所学的知识,虽然迄今为止我们学习的内容只是Python的冰山一角,但是这些内容已经足 ...
- 算法学习day01 栈和队列
1,设计一个算法利用顺序栈的基本运算判断一个字符串是否是回文 解题思路: 由于回文是从前到后和从后到前读都是一样的,所以只要将待判断的字符串颠倒 然后与原字符串相比较,就可以决定是否是回文了 ...
- CPDF_Document
auto pDoc = std::unique_ptr<CPDF_Document>(); pDoc->CreateNewDoc(); auto pDict = CPDF_Dicti ...
- VIJOS-P1625 精卫填海
JDOJ 1587 VIJOS-P1625 精卫填海 https://neooj.com/oldoj/problem.php?id=1587 洛谷 P1510 精卫填海 https://www.luo ...