目录
- URI
- URL
- URL语法
- 相对URL
- URL中的转义
- 现在与未来
- PURL
在
URL
出现之前,人们如果想访问网络中的资源,就需要使用不同的
应用程序
,如共享文件需要使用
FTP程序
,想要发送邮件必须使用
邮件程序
,想要看新闻那只能使用
新闻阅读程序
我们不能期望用户能有拥有所有的应用程序并且能使用它们
而当URL
推出之后,这些问题就不复存在了,URL
为应用程序
提供了一种访问资源
的手段
通过使用URL
和web浏览器
,人们再也不需要使用那些繁多且复杂的应用程序了
URI
在了解什么是URL
是什么之前,我们需要知道什么是URI
URI
是一种更通用的资源标识符
,它是一个更加通用的概念,这个概念包含了URL
和URN
一个URL
肯定是一个URI
,但一个URI
不一定是一个URL
虽然http
规范将更通用的概念URI
作为其资源标识符,但实际上,HTTP
应用程序处理的只是URI
的URL
子集
URL
URL
全称为统一资源定位符
,它通过资源
在互联网中的位置
来标识资源
URL语法
一个URL
含有至多9
个部分
URL
中最重要的就是scheme
,host
,path
三部分
我们接下来对这9
个部分进行总结
组件 | 描述 | 默认值 |
---|---|---|
scheme | 方案,也可以称作协议,方案规定了在访问此资源时所使用的协议,方案必须以一个字母开头,以://作为分隔,方案不区分大小写 | 无,不可省略,必须填写 |
user | 访问方案访问时可能需要进行用户名验证,如ftp | 匿名 anonymous |
password | 某些方案访问时可能需要进行密码验证 | 每个浏览器默认值不相同 |
host | 即资源所存放的机器,可以使用主机名表示,也可以使用ip表示 | 无,不可省略,必须填写 |
port | 服务器所监听的端口 | 每个协议不同 |
path | 路径说明了资源存放在服务器的哪一个地方,路径是服务器定位资源时所需的信息 | 无,不可省略,必须填写 |
params | 对于某些方案来说,只有以上内容是不够的,通过这个组件来输入参数,以此来补全信息 | 空 |
query | 与params类似,同样都是补全信息,但params是针对服务器程序设置的,这个是针对程序所提供的服务设置的 | 空 |
frag | 通常情况下,当我们得到一个html文档时,我们默认是停留在最顶端,如果这个html进行了分段,那我们就可以通过这个组件直接访问指定的分段 | 空 |
几乎没有URL
是将这9
段组件全部使用完全的
相对URL
到这里,我们所学的URL
都是绝对URL
,其实还有一种URL
被称为相对URL
相对URL
即在服务器内部定位资源
的一种URL
,它是一种确保了资源可移植性
的快捷方式
,只要引用文件
与资源
的相对位置
不变,就能保证资源
能被正常访问
以下是一个相对URL
的例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<a href="./a.html"></a>
</body>
</html>
在浏览器
解析到相对URL
时,浏览器
会先将其和基础URL
合并补全为绝对URL
,具体补全规则
如下
资源中显式提供
如果资源
中显示的指定了基础URL
则将使用它来转换绝对URL
,如html
文档中的base
元素使用引用资源的URL
如果资源
中没有显式的指定基础URL
,则会使用引用文件
中的URL
来作为基础URL
没有基础URL
如果一个资源
既没有显式指定URL
,或者引用文件
也无法确定URL
,那么它就有两种情况,一是相对URL
本身是一个绝对URL
,二是URL报错
基于以上规则,我们就能确定一个相对URL
的绝对URL
了
URL中的转义
除了URL
本身就能表示多种协议
外,在URL
传递过程中也会经历多种协议
,某些协议
对于传送的字符没有要求,某些协议则会对不合法的字符进行过滤
,为了确保URL
能在互联网上安全准确
的传输,我们必须使用一种安全
的,通用的字符编码
,现在全世界最通用的编码应当是ASCII
码,它包含了数字字母以及一些常用符号
,使用ASCII
编码自然确保了URL
的安全与准确,但是这个世界上不只有字母数字和一些符号,我如果需要传递一些非ASCII字符
,我们该怎么办呢
URL提供的解决方案为将不安全的字符编码为安全的字符
这种编码机制就是通过一种转义
表示法来表示不安全字符的,这种转义
表示法包含一个百分号(%),后面跟着两个表示字符ASCII
码的十六进制数
现在与未来
毫无疑问,URL
是一种极强的资源标记工具
,通过资源
所处互联网中的位置
来确定资源
,但URL
也有缺点,一旦资源
被移走或更改了存储位置
,原先的URL
就失效了,为了解决这个问题IETF
规定了一种新标准URN
,但目前的URN
还难以取代URL
的地位
PURL
PURL
即统一永久资源定位符
,它是URN
的一种是实现方案
,其原理是通过一个中间层
来将URL
和资源
相分离,从此URL
不再指向资源的实际存储位置
,不管资源
存放到哪,当使用URL
访问时通过中间层
都能得到这个资源