URI、URL、URN概念及对照表

先做简单词义解释,因为我一开始以为URI和URL是一样的,所以先区分这三个最后一个词什么意思,方便不记混

-URL → L = Locator(定位符)
  - URI → I = Identifier(标识符)【I是i的大写】
  - URN → N = Name(名称)


1.URI:统一资源标识符(最大概念,用来唯一标记资源)

2. URL:统一资源定位符,URI子集;带有访问机制、位置信息,可以直接寻址获取资源(http、ftp、file)
完整结构:协议:// 域名 / 路径?参数

3. URN:  只给资源一个永久唯一名字,不提供地址、没有访问协议,浏览器不能直接打开,固定以 urn: 协议开头的永久命名规范,只是 URI 里其中一套 scheme

URI(所有资源标识符字符串总称)
├─ URL(带协议、地址,可以直接访问网页、接口,换服务器地址会变)
└─ URN(永久名称,无位置,无法直接访问,换服务器名称不变)

image

URL 侧重「在哪里找到资源」,URN 侧重「这个资源叫什么名字」;
网站接口路径 /api/userinfo 只是路径片段,拼接域名与协议后,才能构成完整 URL。

官方文档汇总

文档 说明 链接
RFC 3986 URI 通用语法,定义 URL 与 URI 的关系 https://datatracker.ietf.org/doc/html/rfc3986
RFC 8141 URN 语法标准 https://datatracker.ietf.org/doc/html/rfc8141

有几份 RFC 对RFC3986做了补充和更新(如 RFC 6874、RFC 8820),但没有取代它

存在:有一部分 URI,既不属于 URL,也不属于 URN
其他 URI:拥有独立 scheme,不是 urn: 前缀、同时严格意义不属于经典 URL
实例:
mailto:test@shturl.
tel:+8613800000000
news:comp.lang.java
data:image/png;base64,xxxx
既不是 URL,也不是 URN原因:

  • 不是 URN:没有 urn: 开头,不遵循 URN 命名空间规范;
  • 严格意义不属于传统 URL:传统 URL 定义依托网络主机定位资源(http/ftp 这类带 // 域名结构);
  • 合法 URI:符合 RFC3986 通用语法,用来标识一类资源。

小知识:日常开发中很多人宽泛把 mailto、tel 统称为 URL
mongodb://localhost:27017
口语大家常叫数据库 URL;
标准术语:MongoDB 连接 URI;

posted @ 2026-08-02 19:24  你可曾有我  阅读(2)  评论(0)    收藏  举报