URL和URI区别

简介

1)定义

(URL,统一资源定位符)A Uniform Resource Locator thatidentifies the location of an Internet resource as specified by RFC 1738.(统一资源定位符用于标示网络资源的位置)

(URI,统一资源标识符)A Uniform Resource Identifier that identifies an abstract or physical resource, as specified by RFC 2396.(统一资源标识符用于标示一个抽象或者物理资源)

2)区别

也就是说URI是以一种抽象的,高层次概念定义统一资源标识,而URL则是具体的资源标识的方式(以网络位置定义资源标志)。URL是一种URI。

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<fragment>
    scheme:获取资源使用的协议,例如http、ftp等,没有默认值
    user:password:用户名与密码,这个是一个特殊的存在,一般访问ftp时会用到,他显示的表明了访问资源的用户名与密码。但是这个可以不写,不写的话可能会让你输入用户名密码
    host:主机,访问那台主机,有时候可以是IP,有时候是主机名,例如www.baidu.com
    port:端口,访问主机时的端口,如果http访问默认80,可以省略。
    path:通过host:port我们能找到主机,但是主机上文件很多,通过path则可以定位具体文件。例如www.baidu.com/file/index.html。则path是/file/index.html,表示我们访问/file/index.html这个文件,他很像linux上的路径。
    params:这个很少见,主要作用就是像服务器提供额外的参数,用来表示本次请求的一些特性。例如ftp传输模式有两种,二进制和文本,你肯定不希望使用文本形式传输二进制图片,这样你的图片下载下来后可能没法看了。为了向应用程序提供更丰富的信息,URL中有个专门的部分来表示这种参数。例如ftp://file.qiandu.com/pub/guid.pdf;type=d其中的type=d就是params
    query:通过get方式请求的参数,例如:www.qiandu.com/index.html?username=dgh&passwd=123
    fragment:例如www.qiandu.com/index.html#1。当html页面比较长时,我们通常会将其分为好几段,#1就可以 快速定位到某一段。

3)详细定义

URL的格式一般由下列三部分组成:

第一部分是协议(或称为服务方式);

第二部分是存有该资源的主机IP地址(有时也包括端口号)或注册的相应域名;

第三部分是主机资源的具体地址(资源路径)。

URI一般由三部分组成:

访问资源的命名机制。

存放资源的主机名。

资源自身的名称,由路径表示。

4)具体实例介绍

http://localhost:8080/myweb/hello.html

以上web地址,红色字体部分+绿色字体部分为URL(当然也属于URI);绿色字体部分只能认为是URI(其实相对于host的一个相对地址)。


分割线,懂了下面就不用看了


详述

RFC 3986: Uniform Resource Identifier (URI): Generic Syntax资料所介绍:

“A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标志抽象服务或物理资源。”

“A URI 可以进一步被分为定位符、名字或两者都是. 术语“Uniform Resource Locator” (URL) 是URI的子集, 除了确定一个资源,还提供一种定位该资源的主要访问机制(如其网络“位置”)。“

总结就是:URI强调的是给资源标记命名,URL强调的是给资源定位。一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它必须是绝对的schema(protocol)必须被指定。

维基百科描述如下:

“URI可以分为URL, URN或同时具备locators 和names特性的一个东西。URN作用就好像一个人的名字,URL就像一个人的地址。换句话说:URN确定了资源的身份,URL提供了找到它的方式(位置)。”。

总结:URL本质上充当了WWW万维网里面URI的角色,但是URL比URI多了一层意义。通过URL,我们不光知道标志的资源叫什么,还知道所标志的资源在哪里。我们在浏览器输入的都是URL,因为我们输入的目的是为了找到某一个资源,当然你输入的是URI也是没错的,因为URL也是URI。URI标记了一个网络资源,仅此而已;  URL标记了一个WWW互联网资源(用地址标记),并给出了他的访问地址。(URI是Uniform Resource Identifier,表示是一个资源; URL是Uniform Resource Locator,表示是一个地址)

通过这些描述我们可以得到一些结论:

  • 首先,URL是URI的一种(通过那个图就看的出来吧)。
  • 让URI能成为URL的当然就是那个“访问机制”,“网络位置”,“通信协议”。e.g. http:// or ftp://.。
  • URN是唯一标识的一部分,标志的特殊的名字。

  下面就来看看例子吧,当来也是来自权威的RFC:

  • ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of the protocol)
  • http://www.ietf.org/rfc/rfc2396.txt (also a URL because of the protocol)
  • ldap://[2001:db8::7]/c=GB?objectClass?one (also a URL because of the protocol)
  • mailto:John.Doe@example.com (also a URL because of the protocol)
  • news:comp.infosystems.www.servers.unix (also a URL because of the protocol)
  • tel:+1-816-555-1212
  • telnet://192.0.2.16:80/ (also a URL because of the protocol)
  • urn:oasis:names:specification:docbook:dtd:xml:4.1.2

从例子可以看出最主要的区别是URL提供了访问机制,这是判断是否为URL的决定性因素。

 mailto、news 和 isbn URI 都是 URN 的示例。

特别提示:

GET和POST中经常使用的相对地址,相对于host的地址是URI,而不是严格技术意义上的URL。

例如:你需要GET的文件在files.hp.com. 这是URI,但不是URL。而你在浏览器地址栏输入的是URL,带有访问协议的:比如http://files.hp.com 和ftp://files.hp.com.。

结语

If you don’t mind being “that guy”, URI is probably the more accurate term to use. But if you are in the linguist / “use what’s understood” camp, feel free to go with URL.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值