URI、URL、URN

一、简述

调用Web地址是普通的一个行为。一般这种情况,大家都会说,将“URL”放到浏览器中。这里提到的URL ,其实不是一个URL ,是网址的意思。URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。

URI、URL、URN_第1张图片

二、URI、URL、URN

URI、URL、URN_第2张图片

URI是以某种统一的(标准化的)方式标识资源的简单字符串。Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的。URI一般由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。

URI、URL、URN_第3张图片

Web上地址的基本形式是URI(Uniform Resource Identifier,统一资源标识符),它代表统一资源标识符,用来唯一的标识一个资源。有两种形式:
1️⃣URL(Uniform Resource Locator,统一资源定位符):目前URI的最普遍形式就是无处不在的URL或统一资源定位器。它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等
2️⃣URN(Uniform Resource Name,统一资源名称):URL的一种更新形式,统一资源名称。不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。

说明:
URI是标识符,可以表示名称,位置或两者。所有的URN和URL都是URI,但相反是不正确的;产生URL的部分是名称和访问方法的组合。在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。相反的是,URL类可以打开一个到达资源的流。

三、GET和POST的区别

  1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.html?name=wg&id=123456。POST方法是把提交的数据放在HTTP包的Body中。
  2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制。
  3. GET方式需要使用Request.QueryString来获取变量的值,而POST方式通过Request.Form来获取变量的值。
  4. GET方式提交数据,会带来安全问题。比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码。

四、历史

  1. URI:RFC1630,发布于 1994 年 6 月,被称为“Universal Resource Identifiers in WWW: A Unifying Syntax for the Expression of Names and Addresses of Objects on the Network as used in the World-Wide Web”
  2. URL:RFC1738,发布于 1994 年 12 月, 被称为“Uniform Resource Locators”
  3. URN:RFC1737,发布于 1994 年 12 月,被称为“Functional Requirements for Uniform Resource Names”

你可能感兴趣的:(URI、URL、URN)