URL与资源

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

浏览因特网资源

URL是人们对HTTP和其他协议的常用访问点:一个人将浏览器指向一个URL,浏览器就会在幕后发送适当的协议报文来获取人们所期望的资源。

URI是一类更通用的资源标识符,URL实际上是它的一个子集。URI是一个通用的概念,由两个主要的子集URL和URN构成,URL是通过描述资源的位置来标识资源的,而URN则是通过名字来识别资源的,与它当前所处的位置无关。

URL http://www.xxxx.com/xxxx/index.html分为以下三部分:

  1. URL的第一部分(http)是URL方案(scheme)。方案可以告知web客户端怎样访问资源,在这里,URL说明要使用HTTP协议。
  2. URL的第二部分(www.xxxx.com)指的是服务器的位置。这部分告知web客户端资源位于何处。
  3. URL的第三部分(/xxxx/index.html)是资源路径。路径说明了请求的是服务器上哪个特定的本地资源。

URL的语法

URL语法会随方案的不同而有所不同。

大部分的URL都是遵循通用的URL语法,而且不同的URL方案的风格和语法都有不少重叠。

大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

几乎没有哪个URL中包含了所有这些组件。URL最重要的3各部分是方案(scheme)、主机(host)和路径(path)

方案——使用什么协议

方案实际上是规定如何访问资源的主要标识符,它会告诉负责解析URL的应用程序应该使用什么协议。

方案名是大小写无关的。

主机与端口

主机组件标识了因特网上能够访问资源的宿主主机,使用主机名和IP地址访问可以指向同一个服务器。

用户名和密码

很多服务器要求输入用户名和密码才会允许用户访问数据,FTP服务器就是这样一个常见的例子。

路径

URL的路径组件说明了资源位于服务器的什么地方。

路径通常很像一个分级的文件系统路径。

参数

为了向应用程序提供它们所需的输入参数,以便正确地与服务器进行交互,URL中有一个参数组件。这个组件就是URL中的名值对列表,由字符将其与URL的其余部分分隔开来。它们为应用程序提供了访问资源所需的所有附加信息。

例如:

ftp://xxx.xx.xxx.xxx/xxx/xxx;type=x

在这个例子中,有一个参数type=x,参数名为type,值为d

查询字符串

很多资源,比如数据库服务,都是可以通过提问题或进行查询来缩小所请求资源类型范围的。

查询组件由一个问号()将URL与查询部分连接,多个查询语句之间用&号连接。

片段

片段挂在URL的右手边,最前面又一个#

使用片段,能够让URL将资源定位到指定页面的指定片段当中,实现更精准的定位。

关于URN

由于URL并不完美,它们表示的是实际的地址,而不是准确地名字,这就意味着URL会告诉你资源此时处于什么位置,它会为你提供特定端口上特定服务器的名字,告诉你在何处可以找到这个资源。

这个方案的缺点在于如果资源被移走了,URL也就不再有效了,那么,就无法对对象进行定位了。

为了应对这个问题,因特网工程任务组(Internet Engineering Task Force,IETF)已经对一种名为统一资源名(uniform resource name, URN)的新标准做了一段时间的研究了。无论对象移到什么地方,URN都能为对象提供一个稳定的名称

永久统一资源定位符(persistent uniform resource locators,PURL)是用URL来实现URN功能的一个例子,其基本思想是在搜索过程中引入一个中间层,通过一个中间资源定位符服务器对资源实际URL进行登记和跟踪。客户端可以向定位符请求一个永久URL。