博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 URI 和 URL 认识
阅读量:4357 次
发布时间:2019-06-07

本文共 1414 字,大约阅读时间需要 4 分钟。

1.  关键字回顾:

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

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

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

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

转义字符在URL中规定是使用%和两个hex进行表示,这也就是为什么浏览器的form post会自动进行转义成%xx的关系而不使用unicode的关系。

关于 URI 和 URL 认识 - PHP网站开发 - 每日最新博客在置顶博客之后
 

 

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

2. 说说 URL

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

关于 URI 和 URL 认识 - PHP网站开发 - 每日最新博客在置顶博客之后
 

 

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

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

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

关于 URI 和 URL 认识 - PHP网站开发 - 每日最新博客在置顶博客之后

有没有注意到空格在里面?在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), ,它同样也是属于URI的子集, 具体可以goolge下。

转载于:https://www.cnblogs.com/kudosharry/articles/2349569.html

你可能感兴趣的文章
linux配置scp交互传输,Linux间传输文件的几种方法scp、sftp
查看>>
linux安装nginx映射目录,centos8自定义目录安装nginx(教程详解)
查看>>
linux cpu scheduler,A Temporal Partition-Based Linux CPU Scheduler
查看>>
c语言怎么写最小公倍数的函数,C语言 · 最小公倍数
查看>>
c语言中的头文件string.h的作用,C语言常用头文件及库函数——string.h
查看>>
c语言字符-1代表什么,玩儿转C语言:符号和字符(1)
查看>>
知道商洛学院c语言章节答案,C语言程序设计(商洛学院)知到章节答案
查看>>
c语言酒精检测仪程序代码,单片机酒精浓度测试仪,代码,原理图
查看>>
单路电压表c语言编程,单片机数字电压表的设计
查看>>
精通c语言的标准,《精通Unix下C语言编程与项目实践》之七——标准I/O重定向
查看>>
蓝桥杯c语言试题 高职,2011l蓝桥杯c语言高职真题附加答案2.doc
查看>>
c 语言 设计算法 例题,C语言程序设计例题.pdf
查看>>
p4 linux 命令行,《linux就该这么学》学习笔记25期2020-P4
查看>>
android9.0官方下载,安卓9.0系统刷机包 官方正式版
查看>>
android 模块封装,Android开发之针对联系人的封装
查看>>
android 构建期间错误,Android构建错误
查看>>
Android应用开发病虫害识别,基于Android平台的枣虫害识别系统的设计与实现
查看>>
织梦上传html文件,提高DedeCMS生成静态页html文件速度的方法
查看>>
html焦点自动轮播幻灯片js,js实现幻灯片轮播图
查看>>
在Logstash的配置文件中对日志事件进行区分
查看>>