URL的组成
- 第一部分:URL方案,方案可以告知Web 客户端怎么访问资源
- 第二部分:服务器的位置,这部分告知Web 客户端资源位于何处。
- 第三部分:资源路径,说明了请求的是服务器上的那个特定的本地资源。
- URL可以通过HTTP之外的其他协议来访问资源。他们可以只想因特网上的任意资源。 - URL提供了一种统一的资源命名方式。“方案:// 服务器位置/路径” 结构
URL语法
- 大多数URL 方案的URL 语法都建立在这9 个部分构成的通用格式上:
- URL 最重要的3个部分是方案、主机和路径
- 方案:规定了使用什么协议。- 规定如何访问制定资源的主要标识符。它会告诉负责解析URL 的应用程序应该使用什么协议。
- 必须由一个字母符号开始,由第一个冒号将其与URL的其余部分分隔开。
- 方案名是大小写无关的。
- 主机与端口
- 主机组件标识了因特网上能够访问资源的宿主机器,可以使用主机名或者IP地址来表示主机名。
- 端口组件标识了服务器正在监听的网络端口。
- 用户名和密码
- 如果没有用户名和密码的话,浏览器会默认提供一个默认的。
- 用户名和密码中间用冒号分隔,与其他URL部分之间用@ 号分隔。
- 路径
- 说明了资源位于服务器的什么地方。路径通常很像一个分级的文件系统路径。
- 可以用字符 “ / ” 将HTTP URL 的路径组件划分成一些路径段。
- 参数
- 为了向应用程序提供他们所需的输入参数,以便正确的与服务器进行交互。URL中有一个参数组件。
- 这个组件就是URL 中的名值对列表,由字符 “ ; ” 将其与URL 中的其余部分分隔开。他们为应用程序提供了访问资源所需的所有附加信息。
- 例如:像FTP 这样的协议,由两种传输模式,二进制和文本形式。你肯定能够不希望以文本形式来传送二进制图片。
- 查询字符串
- 很多资源都是可以通过提问题或者进行查询来缩小所请求资源类型范围的。
- 这个以 ” ? “ 开头,举个例子,如下,有一个作为 Joe 的五金商店清单查询应用程序的网关的服务器,在这个例子中向此服务器发送了一个查询组件。查询的目的是检查清单中是否由尺寸为 large 、颜色为 blue 的条目 12731.
- 很多网关都希望查询字符串以一系列 ” 名/值 “对的形式出现,名值对之间用字符 ” & “分隔。
- 分段
- 比如,对一个带有章节的大型文本资源文档来说,资源的URL 会指向整个文本文档,但理想的情况是,就能够制定资源中的那些章节。
- URL支持使用片段组件来表示一个资源内部的片段,比如:URL 可以指向HTML 文档中一个特定的图片或小节/片段挂在URL 的右手边,最前面有一个字符 ” # “。
- 但是注意:HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获得了整个资源之后,会根据片段显示你感兴趣的那部分资源。
URL快捷方式
- 绝对URL:包含有访问资源所需的全部信息
- 相对URL:不完整的。要从相对URL 中获取访问资源所需的全部信息,就必须相对于另一个。被称为基础的URL 进行解析。
- 相对URL 只是URL 的片段或一部分。处理 URL 的应用程序(比如浏览器)要能够在相对和绝对URL 之间及逆行转换。
- 转换处理的第一步就是找到基础URL。基础URL 是作为相对URL 的参考点使用的。
- 将相对URL 和基础 URL 划分成组件段,称为分解URL。只要将基础和相对URL 划分成了组件,就可以使用算法来完成转换了。
自动扩展
- 用户不需要输入完整的URL,因为浏览器会自动扩展,
- 主要有以下两种方式
URL字符集
- 编码机制:加入了转义序列,通过一种“转义”表示法来表示不安全字符的,这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII 吗的十六进制数。
- 字符限制:在URL 中,有几个字符被保留起来,有着特殊的含义。在将其用于保留用途之外的场合时,要在URL 中对其及逆行编码。
方案
- 常见的方案格式
- URL 提供了一种可以在因特网协议间共享的统一命名机制。但是URL并不完美。他们表示的是实际的地址,而不是精确的名字。这就意味着URL 会告诉你资源此时处于什么位置。它会为你提供特定端口上特定服务器的名字,告诉你在何处可以找到这个资源。这种方案的缺点在于如果资源被移走了,URL 也就不在有效了。那时,它就无法对对象进行定位了。
- 如果有了对象的精确名称,则不论其位于何处都可以找到这个对象,那该多么完美啊。因此,产生一种新标准:名为同一资源名(URN)。无论对象搬移到什么地方(在一个Web服务器内或者是在不同的Web服务器间),URN都能为对象提供一个稳定的名称。但是URL转换成URN是一项巨大的工程。