2.1 访问网上的资源
URL就是资源的位置.类似于一个盲文的详细地址.有了它,才能找到资源.
2.2 URL语法
一个URL由9部分组成,但最常用的只有3部分.即协议,主机和路径.
2.2.1 方案
- 解析URL的协议
- 指定应用程序用这种协议来解析URL
- 由字母开始,不区分大小写
- 分界符是第1个
: - 默认值是
http
2.2.2 主机和端口
- 主机指明资源在哪台电脑上
- 可以是域名/IP地址
- 端口指定从哪个地方可以获取这个资源
- 主机和端口之间用
:隔开 - 端口默认值是80
2.2.3 用户名密码
- 分界符是
@ - 用户名和密码之间用
:隔开 - 用户名默认是anonymous
- 默认密码不同的浏览器不一样
2.2.4 路径
- 指明资源在服务器的什么位置
- 分界符是
/
2.2.5 参数
- 跟在路径段后面的键值对
- 提供更多的输入参数
- 分界符是
;
2.2.6 查询字符串
- 跟在路径后面的键值对
- 用来缩小查询范围
- 分界符是
?
2.2.7 片段
- 跟在查询字符串后面的字符串
- 用来表示资源的某一部分
- 分界符是
#
2.3 URL快捷方式
2.3.1 相对URL
除了完整的输入URL外,还可以偷个懒,就是用简写的方式.
浏览器会根据基础URL自动拼接绝对URL.如果没有显示提供基础URL<base>,则会取所属资源的URL作为基础URL
浏览器会根据书上P36的算法拼接绝对URL
以前一直以为,只有
./或者/开头的才叫相对URL,实际上,只要是差了某个URL组成部分的URL都可以是相对URL.所以/news/detail?id=1可以简写成?id=1
2.3.2 自动扩展URL
这个其实就是说的浏览器录自动完成和历史纪录保存功能
2.4 URL字符
为什么要限制URL字符
- URL要便于人阅读
- 空格这些虽然能传输但是肉眼看不到
- 所以要删除
- URL要完整包含所有字符
- 除了安全字母外,还要夹带其他数据才能满足需要
- 所以需要用到转义
- URL传输时不能丢失信息
- 像SMTP协议,传输时会丢失信息
- 所以URL只能选最安全的那些字母组成
2.4.1 URL字符集
- 采用US-ASCii字符集
- 因为报文是由7位的2进制编码,超过7位会被丢弃如中文
- 所以只能选择ASCii来,因为他也是7位二进制编码
- 其他字符都需要通过转义放进URL里面
2.4.2 编码机制
- 由
%+ 表示字符的ASCii码的十六进数组成
~ => %7E
% => %25
2.4.3 字符限制
有哪些字符需要编码转义呢,就是下面这些,具体的可参考书P39
- 是保留字,本身用于URL指定用途的
- 可能和其他协议产生冲突的
- ASCii不可打印的区间的
- 十六进制值不在US-ASCii范围内的即 >0x7F的