关于HTTP(二)——URL与资源

统一资源标识符(Uniform Resource Identifier,URI)是一个通用的概念,由两个主要的子集URL和URN构成。

统一资源定位符(URL)是资源标识符最常见的形式。URL 描述了一台特定服务器上某资源的特定位置。

统一资源名(URN)。URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。


URL组成

如果你想要获取URL http://blog.csdn.net/man_tutu/article/details/55052356

URL分为以下三部分:

  • URL的第一部分(http)是URL方案(scheme)。方案可以告知Web客户端怎样访问资源。
  • URL的第二部分(blog.csdn.net)指的是服务器的位置。这部分告知Web客户端资源位于何处。
  • URL的第三部分(/man_tutu/article/details/55052356)是资源路径。路径说明了请求的是服务器上哪个特定的本地资源。

URL语法

大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

URL最重要的三个部分是方案(scheme)、主机(host)和路径(path)。

通用URL组件表:

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

URL快捷方式

Web客户端可以理解并使用几种URL快捷方式。相对URL是在某资源内部指定一个资源的便捷缩略方式。很多浏览器还支持URL的“自动扩展”,也就是用户输入URL的一个关键(可记忆的)部分,然后由浏览器将其余部分填充起来。

相对URL

URL有两种方式:绝对的相对的。绝对URL中包含有访问资源所需的全部信息。而相对URL是不完整的。要从相对URL中获取访问资源所需的全部信息,就必须相对于另一个,被称为其基础的URL进行解析。

解析相对引用的算法:

解析相对引用的算法

自动扩展URL

有些浏览器会在用户提交URL之后,或者在用户输入的时候尝试着自动扩展URL。这些“自动扩展”特性有以下两种方式:

  • 主机名扩展:在主机名扩展中,只要有些小提示,浏览器通常就可以在没有帮助的情况下,将你输入的主机名扩展为完整的主机名。例如你在地址栏中输入bilibili,浏览器就会自动在主机名中插入 www. 和 .com,构建出www.bilibili.com。如果找不到与bilibili匹配的站点,有些浏览器会在放弃之前尝试几种扩展方式。
  • 历史扩展:浏览器用来节省用户输入URL时间的另一种技巧是,将以前用户访问过的URL历史存储起来。当你输入URL时,它们就可以将你输入的URL与历史记录中URL的前缀进行匹配,并提供一些完整的选项供你选择。

URL字符

URL要统一的命名因特网上所有的资源你,这也就意味着要通过各种不同的协议来传送这些资源。这些协议在传输数据时都会使用不同的机制,所以,设计URL,使其可以通过任意因特网协议安全地传输是很重要的。

编码机制

这种编码机制就是通过一种“转义”表示法来表示不安全字符的,这种转义表示法包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数。

示例:

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

字符限制

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

保留及受限的字符:

字符保留/受限
%保留作为编码字符的转义标志
/保留作为路径组件中分隔路径段的定界符
.保留在路径组件中使用
..保留在路径组件中使用
#保留作为分段定界符使用
?保留作为查询字符串定界使用
;保留作为参数定界符使用
:保留作为方案,用户/号令,以及主机/端口组件的定界符使用
$,+保留
@ & =在某些方案上下文特殊的含义,保留
{} | \ ^ ~ [] ‘由于各种传输Agent代理,比如各种网关的不安全处理,使用受限
< > “不安全:这些字符在URL范围之外通常是有意义的,所以应该对其进行编码
0x00-0x1f,0x7f受限,这些十六进制范围内的字符都在US-ASCII字符集的不可打印区间内
>0x7f受限,十六进制值在此范围内的字符都不在US-ASCII字符集的7比特范围内
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值