URL(Uniform Resource Locator),统一资源定位符,是互联网上标准资源的地址。大部分URL语法都由9个部分构成:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
方案(scheme)
http
https
ftp
rtsp,rtspu
file
主机和端口
路径
参数
查询字符串
片段
注意HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源。
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
不同scheme的URL一般只包含其中的部分组件,其中最重要的3个部分是方案(scheme)、主机(host)和路径(path)。
方案(scheme)
方案负责告诉解析URL的应用程序应该使用什么协议,常用的方案包括:
http
超文本传输协议,基本格式:
http://<host>:<port>/<path>?<query>#<frag>
如果省略了端口,默认为80。
https
https类似于http,唯一的区别在于https使用了SSL,SSL为http连接提供了端到端的加密机制,基本格式同http,默认端口为443。
ftp
web应用程序将FTP作为一种数据访问方案使用,URL语法使用下面的格式:
ftp://<user>:<password>@<host>:<port>/<path>;<params>
rtsp,rtspu
RTSP表示实时流传输协议(Real Time Streaming Protocol);
RTSPU中的U表示使用UDP协议来传输资源。它们的URL的基本格式为:
RTSPU中的U表示使用UDP协议来传输资源。它们的URL的基本格式为:
rtsp://<user>:<password>@<host>:<port>/<path>
rtspu://<user>:<password>@<host>:<port>/<path>
file
方案file表示一台指定主机(通过本地磁盘、网络文件系统或其他一些文件共享系统上可直接访问的文件)。基本格式为:
file://<host>/<path>
如果省略了主机名,表示本地主机。
主机和端口
要想在网上找到资源,应用程序需要知道资源所在的主机和资源在主机上的位置,这就对应了URL中的主机和端口。
主机可以使用域名或者ip地址,端口可以省略使用默认端口,例如HTTP的默认端口为80。
主机可以使用域名或者ip地址,端口可以省略使用默认端口,例如HTTP的默认端口为80。
路径
URL的路径说明资源位于服务器的什么地方,路径使用字符"/"分隔划分成一些路径段,每个路径段都可以有自己的参数组件。
参数
某些协议需要提供参数,服务器根据这些参数信息来为请求提供服务。参数就是名值对列表,由字符";"将其与URL的其余部分分隔开来,例如:
ftp://prep.ai.mit.edu/pub/gnu;type=d
也可以为多个路径段提供参数:
http://www.joes-hardware.com/hammers;sale=false/index.html;graphics=true
这里两个路径段hammers和index.html都有各自的参数。
查询字符串
查询字符串为服务端提供更多的信息用于缩小查询范围,通过"?"和URL的其余部分分隔,查询字符串是名值对列表,名值对之间使用"&"分隔,例如:
http://www.joes-hardware.com/inventory-check.cgi?item=12731&color=blue
这里有两个名值对:item=12731和color=blue,表示希望服务端返回的信息需要符合这两个条件。
片段
有些资源类型,比如HTML,除了资源级之外,还可以做进一步的划分。比如一篇大的文章,你希望定位到特定的章节。这时可以在URL中使用片段(frag)来表示一个资源内部的片段。
片段在URL的右边,使用"#"和URL的其余部分分隔,如:
片段在URL的右边,使用"#"和URL的其余部分分隔,如:
http://www.joes-hardware.com/tools.html#drills
这里表示访问该URL指向的页面时定位到名字叫做drills的部分。
注意HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器。浏览器从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源。