目录
- 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访问时通过中间层都能得到这个资源



















