URL与资源

2.1URL 分以下三部分

• URL 的第一部分(http)是 URL 方案(scheme)。方案可以告知 Web 客户端怎样访问资源。在这个例子中,URL 说明要使用HTTP 协议。
• URL 的第二部分(www.joes-hardware.com)指的是服务器的位置。这部分告知Web 客户端资源位于何处。
• URL 的第三部分(/seasonal/index-fall.html)是资源路径。路径说明了请求的是服务器上哪个特定的本地资源。

URL 可以通过HTTP 之外的其他协议来访问资源。它们可以指向因特网上的任意资源,或者个人的E-mail 账户:
mailto:president@whitehouse.gov
或者通过其他协议(比如FTP 协议)访问的各种文件:
ftp://ftp.lots-o-books.com/pub/complete-price-list.xls
或者从流视频服务器上下载电影:
rtsp://www.joes-hardware.com:554/interview/cto_video

2.2URL语法

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

 

 2.2.1 方案——使用什么协议

方案实际上是规定如何访问指定资源的主要标识符,它会告诉负责解析URL 的应用程序应该使用什么协议。

方案组件必须以一个字母符号开始,由第一个“:”符号将其与URL 的其余部分分隔开来。方案名是大小写无关的,因此URL“http://www.joes-hardware.com”和
“HTTP://www.joes-hardware.com”是等价的。

2.2.2 主机与端口

端口组件标识了服务器正在监听的网络端口。对下层使用了TCP 协议的HTTP 来说,默认端口号为80。

下面两个URL 就指向同一个资源——第一个URL 是通过主机名,第二个是通过IP 地址指向服务器的:
http://www.joes-hardware.com:80/index.html
http://161.58.228.45:80/index.html

2.2.3 用户名和密码

很多服务器都要求输入用户名和密码才会允许用户访问数据。FTP 服务器就是这样一个常见的实例。这里有几个例子:

ftp://ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu
http://joe:joespasswd@www.joes-hardware.com/sales_info.txt
第一个例子没有用户或密码组件,只有标准的方案、主机和路径。如果某应用程序使用的URL 方案要求输入用户名和密码,比如FTP,但用户没有提供,它通常会插入一个默认的用户名和密码。比如,如果向浏览器提供一个FTP URL,但没有指定用户名和密码,它就会插入anonymous(匿名用户)作为你的用户名,并发送一个默认的密码(Internet Explorer 会发送IEUser,Netscape Navigator 则会发送mozilla)。
第二个例子显示了一个指定为anonymous 的用户名。这个用户名与主机组件组合在一起,看起来就像E-mail 地址一样。字符“@”将用户和密码组件与URL 的其余部分分隔开来。
在第三个例子中,指定了用户名(anonymous)和密码(my_passwd),两者之间由
字符“:”分隔。

2.2.4 路径

URL 的路径组件说明了资源位于服务器的什么地方。路径通常很像一个分级的文件系统路径

http://www.joes-hardware.com:80/seasonal/index-fall.html

这个URL 中的路径为/seasonal/index-fall.html,很像UNIX 文件系统中的文件系统路径。路径是服务器定位资源时所需的信息。2可以用字符“/”将HTTP URL 的路径组件划分成一些路径段(path segment)(还是与UNIX 文件系统中的文件路径类似)。每个路径段都有自己的参数(param)组件。

2.2.5 参数

ftp://prep.ai.mit.edu/pub/gnu;type=d

在这个例子中,有一个参数type=d,参数名为type,值为d。

 http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true

这个例子就有两个路径段,hammers 和index.html。hammers 路径段有参数sale,其值为false。index.html 段有参数graphics,其值为true。

2.2.6 查询字符串

http://www.joes-hardware.com/inventory-check.cgi?item=12731

这个URL 的大部分都与我们见过的其他URL 类似。只有问号(?)右边的内容是新出现的。这部分被称为查询(query)组件。URL 的查询组件和标识网关资源的URL 路径组件一起被发送给网关资源。基本上可以将网关当作访问其他应用程序的访问点

 

 

 http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue

在这个例子中,查询组件有两个名/ 值对:item=12731 和color=blue。

2.2.7 片段

片段挂在URL 的右手边,最前面有一个字符“#”。比如:

http://www.joes-hardware.com/tools.html#drills

在这个例子中,片段drills 引用了Joe 的五金商店Web 服务器上页面/tools.html 中的一
个部分。这部分的名字叫做drills。

 

 

 2.3 URL快捷方式

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

2.3.1 相对URL

URL 有两种方式:绝对的和相对的。到目前为止,我们只见过绝对URL。绝对URL 中包含有访问资源所需的全部信息。

另一方面,相对URL 是不完整的。要从相对URL 中获取访问资源所需的全部信息,就必须相对于另一个,被称为其基础(base)的URL 进行解析。

相对URL 是URL 的一种便捷缩略记法

基础URL 为:

http://www.joes-hardware.com/tools.html用这个URL 作为基础,可以推导出缺失的信息。我们知道资源名为./hammers.html,但并不知道方案或主机名是什么。通过这个基础URL,可以推导出方案为http,主机为www.joes-hardware.com。

 

 

 2.3.2 自动扩展URL

“自动扩展”特性有以下两种方式。

• 主机名扩展

在主机名扩展中,只要有些小提示,浏览器通常就可以在没有帮助的情况下,将你输入的主机名扩展为完整的主机名。比如, 如果在地址栏中输入yahoo, 浏览器就会自动在主机名中插入www.和.com,构建出www.yahoo.com。如果找不到与yahoo 匹配的站点,有些浏览器会在放弃之前尝试几种扩展形式。浏览器通过这些简单的技巧来节省你的时间,减少找不到的可能。

但是,这些主机名扩展技巧可能会为其他一些HTTP 应用程序带来问题,

• 历史扩展

浏览器用来节省用户输入URL 时间的另一种技巧是,将以前用户访问过的URL历史存储起来。当你输入URL 时,它们就可以将你输入的URL 与历史记录中URL 的前缀进行匹配,并提供一些完整的选项供你选择。因此,如果你输入了一个以前访问过的URL 的开始部分,比如http://www.joes-,浏览器就可能会建议使用http://www.joes-hardware.com。然后你就可以选择这个地址,不用输入完整的URL 了。

2.4 方案的世界

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

URL 有两种方式:绝对的和相对的。到目前为止,我们只见过绝对URL。绝对URL 中包含有访问资源所需的全部信息。

posted @ 2020-03-27 11:36  星火撩原  阅读(353)  评论(0编辑  收藏  举报