URLs(Uniform resource locators)是互联网资源的标准化名称
Navigating the Internet’s Resources
像上一篇博客“《HTTP权威指南》Note1-Overview of HTTP”中提到的,URLs只是URI的一个子集,另一个子集是URN,URL强调资源的位置,URN抢到资源的名称,当某个资源在互联网的位置发生改变,旧的URL将不能再访问该资源,而URN则依然可以。由于URN还未普及,我们一般默认URL就是URI。
URL有统一的格式:scheme://server location/path
URL被应用于除了HTTP之外的其他协议,比如FTP,电子邮件等等。URL是众多网络协议的访问点(原文是access point,翻译有点怪)。
URL Syntax
URL的语法格式(详细)如下
一般没有哪个URL同时拥有以上9个部分,一般用于scheme,host,path. 接下来讲解以详细语法格式中的9个组成部分。
Schemes: What Protocol to Use
scheme一般表示访问某个资源是通过哪种协议。它不区分大小写,用冒号:隔开后面的字段,所以 HTTP://等同于http://
Hosts and Ports
host和port指定你得通过互联网中哪台主机的哪个端口获取某个资源。
Usernames and Passwords
用户名和密码,一般运用于FTP协议,举几个例子,如下:
第一个URL中,没有账户名也没有密码,则默认插入“anonymous”作为账号,而密码,也会插入默认值,不同浏览器的默认密码不同,IE是“IEUser”,Netscape Navigator 是 “mozilla”。 第二个URL中,有账号,则只需要自动插入默认密码。 第三个和第四个URL中,拥有账号也有密码。
通常账号密码通过“@”字符与后续的URL组成部分分隔开,而账号密码之间则用冒号”:”分开。
Paths
path是指你需要到某个主机的哪个位置获取资源,
path中的每一级,都可以有自己的参数(Each path segment can have its own params component)
Parameters
还记得参数Parameters放在哪个位置吗?再看看URL的完整格式,它与path之间用分号“;”隔开。
参数都以键值对的方式出现,如下例子
向前面提到的,path的各个级别都可以有自己的参数,如下
路径在hammers级别有参数sale,值为false,路径在index.html有参数graphics,其值为true
Query Strings
Query Strings的例子如下,不大理解,这个和get方法后面的参数不是一样吗
Fragments
这个概念是指从服务器获取某个对象,显示在浏览器之后,直接滚动显示到某个片段。
注意,该语法不会使服务器只返回某个对象的片段,服务器仍然返回整个对象,只是浏览器默认滚动到某个片段的位置。
如下语句
该网页www.joes-hardware.com/tools.html的源代码为: