1、URL是通过描述资源的位置来标识资源的,而URN则是通过名字来标识资源的,与它们当前所处位置无关。
2、URL的语法:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
2.1、scheme:访问服务器要使用的协议
2.2、user,password:若用户没有提供,会插入一个默认的用户名和密码。用户名为anonymous,密码根据浏览器的不同会有不同的默认密码。
2.3、host,port:没什么好说的
2.4、path:服务器上资源的本地名,又斜杠分割。
2.5、params:参数为名/值对。URL中可以包含多个参数字段,它们之间以及与路径的其余部分之间用;分割。HTTP URL的路径组件可以分车给你若干路径段,每段都可以有自己的参数。
2.6、query:某些scheme会用这个组件传递参数以激活应用程序
2.7、frag:一部分资源的名字。因为服务器处理的是整个对象,所以这个字段只在客户端内部使用。
3、URL快捷方式
相对URL是不完整的,需要一个基础的URL。除了相对URL,还有自动扩展URL。
4、各种令人头疼的字符
URL在不同的协议之间传送资源,在传送的过程中不能出现信息丢失。但是因为协议在传输数据时都会使用不同的机制,比如SMTP协议会剥去一些特定的字符,为了避开这些问题,URL只能使用一些相对较小的通用的字符。
一般情况下,很多应用程序使用的都是ASCII字母集,但是ASCII字符集只使用7位二进制表示,对于其他语种的字符不容易表示。因此,URL通过转义序列,用ASCII字符集的有限子集对任意数据进行了编码。这种转义表示法包含一个“%”,后面跟着两个表示字符ASCII码的十六进制数。
虽然对某些传输协议来说,即使使用一些不安全的字符,也没有什么问题,但对应用程序开发人员来说,对非安全字符进行编码仍然是明智的,客户端应用程序在向其他应用程序发送任意URL之前,最好把所有不安全或受限字符都进行转换。
5、方案
关于各方案的详细可查看附录A。在此仅介绍几个常见的。
HTTP:除了没有用户名和密码外,与通用的URL格式相符。端口默认为80
HTTPS:和HTTP类似,除了其使用SSL作为加密机制。端口默认为443
FTP:上传和下载文件。端口默认为20和21
FILE:表示一台指定主机(通过本地磁盘、网络文件系统或其他一些文件共享系统)上可直接访问的文件。若省略主机名,默认为本地主机。
NEWS:用来访问一些特定的文章或新闻组。news URL中缺乏到何处获取资源的信息——没有提供主机名或继承名称。从用户那里获取此类信息是解释程序的工作。