您的位置:首页 > 其它

URL、URI和URN之间的区别

2016-10-24 14:25 316 查看
    有一个经典的技术争论,很多人都会问:URL、URI和URN,它们之间的区别是什么?

    先看一下这三个名词的解释:

    URI(Uniform Resource Identifier 的缩写),统一资源标识符;

    URL(Uniform Resource Locator 的缩写),统一资源定位符,不仅标识了资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置;

    URN(Uniform Resource Name 的缩写),统一资源名称,用特定命名空间的名字标识资源,使用URN可以在不知道其网络位置及访问方式的情况下讨论资源。

    先通过一个示例认识一下Java URI:

   
URI: http://username:password@host:8080/directory/file?query#fragment
  


    其实,URL和URN都是URI的子集。换而言之,URL和URN都是URI,但是URI不一定是URL或者URN。下面这张图概括了他们之间的关系。



   URI可被视为定位符(URL),名称(URN)或两者兼备。统一资源名(URN)如同一个人的名称,而统一资源定位符(URL)代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。

   URI的通用格式:scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]。

   下面通过一个简单的示例解释下URI、URL和URN的区别:

   下面构造一个URI:

http://bitpoetry.io/posts/hello.html#intro  // 构造一个URI


   开始解析
http://  // 是定义如何访问资源的方式
bitpoetry.io/posts/hello.html  // 是资源存放的位置
#intro  // 是资源

   URL是URI的一个子集,告诉我们访问资源位置的方式。在例子中,URL应该如下所示:

http://bitpoetry.io/posts/hello.html[/code]   URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式。在例子中,URN如下所示:
bitpoetry.io/posts/hello.html#intro
  通过以上所述,可能你已经清楚了这三者之间的不同。所以,使用URI吧,这样通常技术上是正确的。另外,“URL”这个术语正在被弃用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  URI URL URN