这是我阅读《HTTP权威指南》的总结和思考中,一系列文章的一篇,目录在这里
什么是资源
Web是由资源(Web resource)构成的,资源存放在服务器(Web Server)中,包含:
- 文件: 包括了各式各样的静态文件,HTML、CSS、JavaScript、图片、音乐、视频
- 网关: 网关是特殊的服务器,作为中间实体生成或者从其他位置请求资源,包括了各种动态生成返回的服务,例如股票信息等
URI
URI(Uniform Resource Identifier)指一个字符串用于标示某一个互联网资源,类似于资源的身份证
URI包括了URL(占绝大多数)和URI(未来趋势)
URL
定义
URL(Uniform Resource Locator)指的是通过位置相关信息来对一个互联网资源进行标示,当资源(文件)移动位置,就会失去效果
语法
|
|
一般的URL包含了最重要的3个部分,scheme、host和path
也有特殊的URL,比如mailto:wmcs@xxx.cn
不符合该规则
path后面的params、query、frag由web的开发者利用
相对URL
关于相对URL的具体解析算法在36页,总的来说算法如下:
scheme
为空说明是相对URL,否则为绝对URL- 相对URL继承基础URL(当前环境)的
host
,user
,password
,scheme
和port
- 前导为
./
我理解为是相对当前资源进行跳转, 例如http://www.a.com/b/c/d.html
中,点击./e.html
会跳转到http://www.a.com/b/c/e.html
- 前导为
/
我理解是基于根domain跳转,例如3中的例子点击/e.html
会跳转到http://www.a.com/e.html
URL字符集
URL仅允许使用ASCII的一个子集,非这个集合内的字符都需要转移,通过一个百分号加十六进制ASCII码完成
例如空格在URL中为%20。
包括. ? # %
都具有特殊用途,全部表参考书中39页
URN
URL具有一个显著的缺点: 当资源移动后,我们无法根据位置来找到他们。人们希望设计一个与位置无关的,永久存在的标记命名一个资源。能够随时随地获取
URN就是这样思想下的产物,一个资源具有一个始终稳定的名称。但是因为其实现难度(需要对资源登记,追踪,解析URN)始终没有推广与标准化
PURL(persistent URL)是这个思想的一种URL实现,将URL登记在一个中间层中,当URL改变,更新中间层的缓存,从而始终用一个URL从中间层访问资源,例如: