URL、URI和URN之间的区别

本文解释了URI、URL和URN的概念及其区别。URI作为统一资源标识符,包含URL和URN两个子集。URL用于指定资源的位置和访问方式,而URN则用命名空间内的名字来标识资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    有一个经典的技术争论,很多人都会问: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
   URN是URI的子集,包括名字(给定的命名空间内),但是不包括访问方式。在例子中,URN如下所示:
   bitpoetry.io/posts/hello.html#intro
  通过以上所述,可能你已经清楚了这三者之间的不同。所以,使用URI吧,这样通常技术上是正确的。另外,“URL”这个术语正在被弃用。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值