18.1.6 SHTTPD定位URI的需求
URI是Universal Resource Identy的简写,是同一资源标识符的意思,它是一种格式化的字符串,通过名称、地址或者其他别的特征来确定网络资源的位置。URI已经广为人知,例如WWW地址、通用文件标识符、统一资源定位器(URL)、统一资源名称(URN)等。
1.URI的一般语法
URI的表示形式可以为HTTP里的绝对形式或者与已知URI对比的相对形式。两种形式的区别在于:绝对URI要以一个协议的摘要名字作为开头,其后是一个冒号。例如http://www.sina.com.cn是一种绝对URI,而www.sina.com.cn是一种相对URI。
对于URI的请求,HTTP协议不对长度做限制,服务器必须处理到达服务器的任何URI资源请求,并能够处理无限长的URI。当然实际的服务器中总有URI请求的长度限制。
2.HTTP URL
HTTP协议通过HTTP协议给出网络资源的位置。其形式如下:
http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
即一个“http:”后面跟“//”,然后是主机的名字,名字后面是主机的端口。然后是主机的请求资源,如果之后又“?”则后面会有传给服务器的参数。
这个形式中,如果端口为空或未给出,系统会使用默认值80。
3.URI 比较
URI是大小写敏感的,也就是说,比较两个URI是否一致,字符串必须按照大小写是两个不同资源来对待。例外情况如下:
q 当请求资源的端口没有给出或者为空的时候,URI的端口为默认值。
q 对于URI中的主机名的比较必须是不区分大小写的,例如WWW.SINA.COM.CN和www.sina.com.cn是相同的URI。
q 协议的名称比较必须是不区分大小写的,例如HTTP://www.sina.com.cn和http://www.sina.com.cn是相同URI。
除了“保留”或“危险”集里的字符,字符等同于它们的“% HEX HEX”编码.。以下3个URI是等同的:
http://sina.com:80/index.html
http://sina.com/index.html
http://SINA.com:/index.html