独上高楼-HTTP协议(2):URI
如我所见的,一模一样的我
我感到的我是那个真我吗?
在web世界,URI用于指示资源。
为了简单,URI被设计为上下文无关,不关心资源是否存在也不关心如何获取资源。所以web世界的资源总是无序的,你无法确切的知道整个互联网有多少资源,也不知道这些资源应该如何被正确的管理。
介绍
URI(Uniform Resource Identifier)是web世界的基础,他定义了网页世界和主机世界的映射关系,让资源有迹可循。
在RFC3986中详细介绍了URI的作用是用于提供一种简单和可扩展的方式来描述资源
,简单的说来:
Uniform
: 提供统一的格式来识别资源
resource
:可被标识的任何东西
Identifier
:表示可标识的东西
可以将Identifier
理解为名词,Uniform
表示语法规则,resource
代表物理实体。
深入
URI的格式
URI格式-
如果在英语世界,这样的设计没多大问题。在非英语世界,如果URI中混入了非
ASCII
字符是没法处理的,标准的处理方法是Percent-Encoding
,将非ASCII字符用ASCII字符来替代,对于白左
而言,这种处理方式体现了白人至上
的感觉。有一个叫做
IRI
的东西,引入unicode
字符来解决兼容
问题。 -
在大家对URI理解不深的时候,URI跟文件实际路径一一对应,比如说:
http://server.com/../../var/log/test.log
这样会导致一些安全性问题。
-
URI指定了查询字符串,web的很多问题就出现在这里,你可以用
猜
的方法来访问资源所有者并不想你访问的资源。也就是注入
。 -
登录信息直接写在访问资源中(授权不应该是资源自身的属性)。
……
URI的设计理念
-
转录特性
URI需要经过
翻译
才能够获取该资源,这个过程称为转录
过程。 -
与交互分离
对URI来讲,他不关心如何去获取资源,他总是用于指示某个资源,而不关心如何获取资源或者资源是否存在。
-
分层标识
资源的组织是按照
树形
结构进行组织。