1.URI,URL,URN
在很多地方看到uri和url的区别,但是都没有说清楚,有的说uri是url去掉协议和query string的那一部分,这种说法是不对的,下面是URI Standard (RFC3986) 在 1.1.3 小节“URI, URL, and URN”中对三个概念的澄清:
URI 可以进一步分为定位器、名称,或者二者兼具。术语“Uniform Resource Locator” (URL) 涉及的是 URI 的子集,除识别资源外,它还通过描述其最初访问机制(比如它的网络“位置”)来提供定位资源的方法。 术语“Uniform Resource Name” (URN) 在历史上曾用于引用“urn”方案 [RFC2141] 下的 URI,这个 URI 需要是全球惟一的,并且在资源不存在或不再可用时依然保持不变,对于其他任何拥有名称的一些属性的 URI,都需要使用这样的 URI。
也就是URL和URN是URI的子集。
URI的语法由其scheme决定,“一般URI”包括四个组件,如下:
<scheme>://<authority><path>?<query>,除了<sheme>,其他的组件有可能不存在。
1). scheme = alpha *( alpha | digit | "+" | "-" | "." )
2). authority =