URI 和 URL的一些研究笔记

NewImage

1. 关键字回顾:

RFC(Request For Comments) ,RFC文档是一系列关于Internet(早期为ARPANET)的技术资料汇总,于1969年开始发布。它制定了我们很多常见和不常见的Internet的各种文字资料和规范。


URI(Universal Resource Identifiers) 统一资源标识符, RFC 文献1630中定义了它详细的规范(1994年6月)

|- URL(Uniform Resource Locators) 统一资源定位符,RFC文献1738中定义了它详细的规范(1994年12月)


URI的规范中,资源描述文字,只允许使用字母,数字,安全字符,特殊字符,和转义字符

转义字符在URL中规定是使用%和两个hex进行表示,所以也就是为什么浏览器的form post会自动进行转义成%xx的关系而不使用unicode常用的%uxxxx(同时ECMAScript v3也不推荐在js中使用escape)。

 

NewImage

但是值得注意的是在URI中,空格是作为保留字的,所以URI规范中空格被辅以一个快速标记符号(short hand notation)来进行标识,就是我们看到的+号。所以在php中提供的urlencode方法是为了把字符串转换成URI规范用的, 保留空格转换成+号,可以模拟出浏览器form post的结果。

 

2. 说说 URL

URL 其实是 URI 中的一个子集,URI是一个很宽泛的定义,而且也在URI的基础上做了自己的特殊规范,例如

NewImage

另外 URL 中把 # 规定成锚点是用来定位使用,使用了URI规定的保留字中的一个字符。

当然URL的escape也遵循了URI的规范使用 %和两个hex的格式。

值得注意的是URL的保留字和URI是不一样的,这些字符都是有特殊意义的

NewImage

有没有注意到空格在里面?在URL规范中,空格只是认为不安全(unsafe)的存在,因为可能会因为排版和打印关系,可能会被忽略,所以URL中是需要把空格转换成%20的。对应的php提供的rawurlencode 方法是用来把字符串转换成URL的标准。

JS中的 encodeURI和encodeURIComponent 对字符的转义,虽然也是按照URI规范转义,但是它并没还有转换空格成+号,而是%20,后者会把URI的保留字; : / ?也进行转义。为什么浏览器和流行的server遇到 “ “,%20,+ 都会转换成空格?其实是为了更好兼容URI标准。

其实很多流行的http server都已经根据标准自动把url进行decode后给到后面的CGI进行处理,而我们自己的server很多时候需要开发来对这些进行decode。如果对这些标准不了解就很容易在decode的时候使用错误的decode手段。

而unicode目前使用场景最多的是在我们的脚本语言和页面展示中,为了支持更宽的字符集,用一种统一的编码来规范处理文字而使用,浏览器会根据资源的定义(charset) 对目标的文字先进行unicode转义后再进行统一的处理,这样就可以保证一个utf-8 的页面也可以同时支持请求GB2312的资源,而不会因此显示出错。

 

3. 附件:

除了URI和URL以外,还有一个不太流行的URN(Uniform Resource Name), 有兴趣的同学可以自己研究:P,它同样也是属于URI的子集。



[本日志由 puterjam 于 2012-12-27 03:56 PM 更新]
上一篇: HTML5 重力感应试玩~
下一篇: 关于MacOS下字体的一些研究
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: url rfc 标准
相关日志:
评论: 21 | 引用: 0 | 查看次数: -
约定[2012-11-23 10:22 AM | | Mail To:shaquilleyoung3@gmail.com | 116.226.236.191 | del | 回复回复]
您好,博主,可否推荐一个从text中匹配url的代码例子了(php环境)。因为我对url标准不是太明白,不知道什么样的正则才是符合url标准的正则。
www.pinpi.net[2012-01-05 10:44 AM | | Mail To:shsh@njsvc.com | 180.109.206.56 | del | 回复回复]
第一次学习到uri的知识,收藏了。!
无人值守换热站www.qdhwhz.com[2011-12-20 11:11 AM | | | 60.210.106.211 | del | 回复回复]
小世界里大学问呢
天津演出服租赁www.bcsjkorea.com[2011-12-20 11:05 AM | | | 60.210.106.211 | del | 回复回复]
那就支持了吧,呵呵
www.haohaotao.cn[2011-12-19 02:25 PM | | Mail To:1231@qq.com | 183.167.177.149 | del | 回复回复]
学习了,很有用
Believe[2011-12-16 07:35 PM | | | 118.26.246.27 | del | 回复回复]
很棒的文章!支持~
www.nbshafa.com[2011-12-15 10:19 PM | | | 115.215.171.94 | del | 回复回复]
谢谢分享,学习了。。。。
天津婚纱摄影[2011-12-11 11:38 AM | | | 111.193.0.130 | del | 回复回复]
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱:
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 500 字 | UBB代码 开启 | [img]标签 关闭