URL查看源代码讨论查看历史
URL |
统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指定信息位置的表示方法。它最初是由蒂姆·伯纳斯·李发明用来作为万维网的地址。现在它已经被万维网联盟编制为互联网标准RFC1738。
简介
因特网上的可用资源可以用简单字符串来表示,该文档就是描述了这种字符串的语法和语义。而这些字符串则被称为:“统一资源定位器”(URL)。这篇说明源于万维网全球信息主动组织(World Wide Web global informationinitiative)介绍的概念。RFC1630《通用资源标志符》描述了一些对象数据,他们自1990年起就开始使用这些对象数据。这篇URL说明符合《因特网资源定位符的功能需求(Functional Requirements for Internet Resource Locators)》中说明的需求。这篇文档是由工程任务组织(IETF)的URI工作小组写的。正如访问资源的方法有很多种一样,对资源进行定位的方案也有好几种。URL的一般语法只是为使用协议来建立新方案提供了一个框架,当然除了已经在这篇文档中定义过的。URL通过提供资源位置的一种抽象标志符来对资源进行定位。系统定位了一个资源后,可能会对它进行各种各样的操作,这些操作可以抽象为下面的几个词:访问,更新,替换,发现属性。一般来说,只有访问方法这一项在任何URL方案中都需要进行描述。
评价
URL是由一串字符组成,这些字符可以是字母,数字和特殊符号。一个URL可以用多种方法来表现,例如:纸上的字迹,或者是用字符集编码的八位字节序列。URL的解释仅取决于所用字符的特性。在大多数URL方案中,都是使用URL不同部分的字符序列来代表因特网协议中所使用的八位字节序列。例如,在ftp方案中主机名,目录名和文件名就是这样的八位字节序列,它们用URL的不同部分代表。在这些部分里,一个八位字节数可以用这样的字符来表示:该字符在US—ASCII[20]编码字符集中的编码是这个八位字节数。另外,八位字节数可以被编成如下形式的代码:“%”后加两个十六进制数字(来自于“0123456789ABCDEF”),这两个十六进制数字代表了这八位字节数的值。(字符“abcdef”也可以用于十六进制编码)。如果存在下面的情况:八位字节数在US-ASCII字符集中没有相应的可显示字符,或者使用相应字符会产生不安全因素,或者相应的字符被保留用于特定的URL方案的解释,那么它们必须被编成代码没有相应的可显示字符:URL只能用US-ASCII字符编码集中的可显示字符表示。US-ASCII中没有用到十六进制的八位字节80-FF,并且00-1F和7F代表了控制字符,这些字符必须进行编码。不安全:字符不安全的原因很多。空格字符就是不安全的,因为URL在被转录或者被排版或者被字处理程序处理后其中重要的空格可能被忽略,而可忽略的空格却有可能被解释了。“<”和“>”字符也是不安全的,因为它们被用来作为URL在文本中的分隔符;而在有些系统中用引号“"”来界定URL。“#”字符也是不安全的,因为它在万维网和其他一些系统中被用来从“片段/锚点”标志符中界定URL,所以它通常都要被编码。字符“%”被用来对其他字符进行编码,它也是不安全的。其他一些字符,如:"{", "}", "|", "\", "^","~","[", "]",和"`",由于网关和其他传输代理有时会对这些字符进行修改,所以它们也是不安全的。必须对URL中所有不安全的字符进行编码。例如,URL中的字符“#”即使是在通常不处理片断或者锚点标志符的系统也需要进行编码,这样如果这个URL被拷贝到使用这些标志符的系统中,也不必改变URL编码了。保留:许多URL方案保留了一些字符并赋予特定的含义:它们出现在URL的特定部位并表示特定的含义。如果一个字符对应的八位字节在方案中被保留了,那么这个八位字节必须进行编码。字符";","/", "?", ":", "@", "=" 和 "&"可能被某个方案所保留,除此之外没有其他的保留字符。通常情况下一个八位字节被用一个字符表示后或者被编码之后,URL的解释都是一样的。但这对于保留字符来说就不适用了:对某一特定方案的保留字符进行编码可能会改变URL的语义。这样,在URL中只有字母与数字,以及特殊字符“$-_.+!*'(),”和用作保留目的的保留字符可以不进行编码。另一方面,不必进行编码的字符(包括字母与数字)如果出现在URL的特定部位,只要它们不用作保留目的,则可进行编码。[1]