URL的那些事儿

1. URL语法

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

相关说明:

组件描述默认值
方案访问服务器以获取资源时要使用哪种协议
用户某些方案访问资源时需要的用户名匿名
密码用户名后面可能要包含的密码,中间由冒号(:)分隔<E-mail地址>
主机资源宿主服务器正在监听的端口号。很多方案都有默认的
端口号(HTTP的默认端口号为80)
每个方案特有
路径服务器上资源的本地名,由一个斜杠(/)将其与前面的URL
组件分隔开来。路径组件的语法是与服务器和方案有关的
,URL路径可以分为若干个段,每个段都可以有其特定的
组件
参数某些方案可能会用这个组件来指定输入参数。参数为
名/值对。URL中可以包含多个参数字段,他们相互之间
以及与路径的其余部分之间用分号(;)分隔
查询某些方案会用这个组件传递参数以激活应用程序(比如数
据库、公告板、搜索引擎以及其他因特网网关)。查询组
件的内容没有通用格式。用字符“?”将其与URL的其
余部分分割开来
片段一小片或一部分资源的名字。引用对象时,不会将frag
字段传送给服务器;这个字段是在客户端内部使用的。
通过字符“#”将其与URL的其余部分分隔开来



例如:
http://www.test.com/check.php?item=110&color=blue/index.html;graphics=true
有两个路径段check.php和index.html。check.php有查询组件item=110&color=blue, 而index.html有参数graphics,其值为true.

2. URL快捷方式

  1. 使用相对URL
    基于Base URL进行解析
  2. 自动扩展URL(结合浏览器)
    • 主机名扩展
    • 历史扩展

3. URL编码机制

为了避开安全字符集表示法带来的限制,人们设计了一种编码机制,用来在URL中表示各种不安全的字符,这种编码机制就是通过一种”转义”表示法来表示不安全字符的,这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制。


例如:

字符ASCII码示例URL
~126(Ox7E)http://www.test.com/%7Ejoe
空格32(0x20)http://www.test.com/more%20tools.html
%37(0x25)http://www.test.com/100%25lol.html

4. URL字符限制

在URL中,有几个字符被保留起来,有着特殊的含义。有些字符不在定义的US-ASCII可打印字符集中。还有些字符会与某些因特网网关和协议产生混淆,因此不赞成使用。

保留及受限的字符

字符保留/受限
%保留作为编程字符的转义标志
/保留作为路径组件中分隔路径段的定界符
.保留在路径组件中使用
..保留在路径组件中使用
#保留作为分段定界符使用
保留作为查询字符串定界符使用
;保留作为参数定界符使用
:保留作为方案、用户/口令,以及主机/端口组件的定界符使用
$, +保留
@ & =在某些方案的上下文中有特殊的含义,保留
{ }| \ ^~[ ]’用于各种传输Agent代理
<>”不安全;这些字符在URL范围以外通常是有意义的
0x00-0x1F,0x7F受限,这些十六进制范围内的字符都在US-ASCII字符集的不可
打印区间内
>0x7F受限,十六进制在此范围内的字符都不在US-ASCII字符集的
7进制范围内

5. 未来展望

URN(uniform resource name): 作为特定内容的唯一名称使用的,与目前资源的所在地无关。使用这些与位置无关的URN,就可以将资源四处搬移。

6. 参考资料

  1. HTTP权威指南
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值