[HTTP权威指南笔记]URI和URL的区别 - pod4g/tool GitHub Wiki

1. URI

Uniform Resource Identifier 统一资源标识符

用来标识网络上的一个资源,是资源识别的最普适的方案

2. URL

Uniform Resource Location 统一资源定位符

用来标识网络上的一个资源,使用资源在网络上位置来唯一标识该资源

也是一个普适的概念

下面都是合法的的URL:

  1. http://z.diaox2.com/view/app/show/1
  2. ftp://ftp.lots-o-books.com/pub/complete-price-list.xls
  3. rtsp://www.joes-hardware.com:554/interview/cto_video

URL由6部分(事实上还可以有其他部分,但是绝大多数人可能一辈子都遇不到这种URL)组成:

  1. scheme(该URL使用的协议,大小写无关)
  2. host
  3. port(HTTP的默认端口为80,其他各个协议也有相应的默认端口)
  4. path
  5. query
  6. hash

上述所谓的“部分”也称之为"组件"

注意:Nodejs中的url模块的parse方法返回的既有host又有hostname,host为带端口的hostname

比如:http://z.diaox2.com:3001/show/?id=1

host:z.diaox2.com:3001

hostname: z.diaox2.com

3. 两者的关系

URI是URL的父集,URI包括两部分:URL和URN;

现在,几乎所有的URI都是URL!所以导致两者常常混淆

HTTP应用程序,例如浏览器,处理的只是URI的URL子集