当前栏目
聊聊 URL、URI、URN 有什么区别?
一、URL
URL 全称为 Uniform Resource Locator,意为统一资源定位符。URL 是一串字符串,这些字符可以是字母,数字和特殊符号。URL是给定唯一资源的地址,指向该唯一资源的位置。
URL的语法如下:
- scheme:通信协议,包括HTTP、HTTPS、FTP、MAILTO、IRC、FILE等。
- authority包含两部分:
- host:主机,服务器(计算机)域名系统(DNS),主机名或IP地址。
- port:端口号,可选,省略时是默认端口,如HTTP的默认端口是80,HTTPS 的默认端口是 443。
- path:路径,用来表示主机上的一个目录或者文件地址。
- query:查询的参数,多个参数由 “&” 隔开,每个参数的名和值用“=”号隔开。如:age=18。
- fragment:信息片段,在给定页面内跳转的目标。
URL 的例子:
http://website.com/path/to/page
https://website.com/path/here?name=html#head
http://website.com:5500/path/here
那URL和链接又是什么关系呢?虽然这两个术语通常是可以互换使用的,但是从技术上讲,它们并不是同义的。URL是一个字符串,可以用于定位资源,而链接(超链接的缩写)是一种HTML元素,可以从浏览器中的给定 URL 加载资源。所以,链接依赖于URL,没有链接的URL也可以存在,但是没有URL的链接是没有意义的。
二、URI
URI 全称为 Uniform Resource Ideyintifier,意为统一资源标识符。URI 是一种标准方法,用于通过Location、Name或两者来识别资源。URI 有两个子集,即 URL 和URN。
URI 的语法如下:
可以看出来,URI 和 URL 的语法主要区别在于 authority,它包含三个内容:
- User info:可选,可能包含用户名和密码(可选),由冒号 (:) 分隔,后跟 @ 符号。
- Host:域名或者IP地址。
- Port:指向域或 IP 地址的端口号。
URI 的例子:
mailto:hey.john .com
file:website.com/pathtofile/intro.pdf
https://john@website.com:5052/path/to/page
URI 和 URL 都遵循相同的规范:RFC 3986。但是,URL 可以定位资源,URI 只是标识资源。所有的 URL 都可以是 URI,但不能所有的 URI 都是 URL,因为 URI 包含 URL 和 URN。
三、URN
URN 全称为 Uniform Resource Name,意为统一资源名称。统一资源名称提供有关资源本身的信息,仅包括资源的名称或标识,但不提供用于访问资源的协议或地址。其会以永久的方式来标识资源,即使该资源不再存在。它通过名称在给定的命名空间中标识资源,命名空间是指一组名称或标识符。
URN 的语法如下:
- scheme:方案规范(**urn:**)不区分大小写。
- NID:名称空间标识符,可以包括字母、数字和连字符 (-),后跟冒号 (:)。
- NSS:特定于命名空间的字符串。NSS 可能包含 ASCII 字母、数字、标点符号和特殊字符。
下面是一些特定名称空间的 NID 编号:
NID | 命名空间 | 含义 |
Isbn | International Standard. Books Number | 图书的唯一标识符 |
Issn | International Standard Serial Number | 期刊的唯一标识符 |
Uuid | Universally Unique Identifier | 计算机系统内的唯一信息标识符 |
Isan | International Standard Audiovisual Number | 电影等视听作品的唯一编号 |
URN 的例子:
urn:website:language:html:head
urn:isan:0000-0000-2CEA-0000-1-0000-0000-Y
urn:ISSN:0167-6423
与 URL 不同,URN 不提供任何有关定位资源的信息,而只是标识它。比如书籍的ISBN码就属于URN,它用来标识某一本书,但它不是URL,因为它没有指定如何检索该书。
四、总结
URL、URI、URN 的区别如下:
- URL和URN都是URI的子集。
- URL: 用来标识网络资源,指定了操作或获取方式,同时包含访问机制和网络位置。
- URN:用特定命名空间的名字标识资源。包括名字(给定的命名空间),但不包含访问方式。
相关文章
- JDK中内嵌JS引擎介绍及使用
- 49195,npm最后的疯狂?盘点10款最有前途JavaScript构建工具
- 译文:5个增强Node.js应用程序增强功能
- 4个例子,吃透 JavaScript 实现的二叉搜索树 BST
- Vue中使用XML和JSON格式互转插件
- JDK中Jshell简单使用(JDK9版本以上或者JDK9版本)
- shiro中的JSP标签支持
- Java技术点-json转对象,对象转json
- SpringBoot+SpringDataJpa @Query之 JPQL使用书写模板(模糊查询and条件查询)
- Spring Boot中的Freemarker模版引擎引用css和js的正确姿势
- Node.js解压版的环境配置及相关常用命令
- JSP学习笔记(6)—— 自定义MVC框架
- JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍
- Jsp学习笔记(4)——分页查询
- APIJSON简单使用
- JSP学习笔记(3)——JSTL 标签库
- JSP学习笔记(1)——Jsp指令、动作元素和内置对象
- JavaScript ES6 Promise对象
- Web前端——JavaScript扩展补充
- Web前端——表单提交和Js添加选项