URL和URI之间的区别

引言

浏览网页时,我们需要知道“网址”才能访问,这里说的“网址”通常就是指URL,比如:https://www.xydida.com/index.html,而平时也会说URIURN,那又是什么呢?今天就来捋一捋。

URL

Uniform Resource Locator,统一资源定位符,就是我们说的网址,标准格式如下:

协议类型有很多,常见的有httpftpfile等,既然代表一个资源,那么数据库连接字符串也算作URL,如:jdbc:datadirect:oracle://myserver:1521;sid=testdb

URN

Uniform Resource Name,统一资源名称,指互联网上某一独一无二的资源的名称,标准格式如下:

urn:<NID>:<NSS>

开头的urn:序列大小写不敏感的。<NID>是命名空间标识,它是一个“命名空间特定”的字符串,决定了如何解释<NSS>的句法,比如这个:urn:isbn:0-486-27557-4,指向的就是莎士比亚的戏剧《罗密欧与朱丽叶》的某一特定版本。

URI

Uniform Resource Identifier,统一资源标志符,是标志互联网上某一资源的字符串,它包含URLURN,如图:

所以,URN如同一个人的名称,URL代表一个人的地址。还是拿上面的ISBN 0-486-27557-4举例,它表示的是一本书,为了获得这本书的资源来阅读,就需要知道它的位置,也就是URL。更进一步,URN定义某事物的身份,而URL提供查找该事物的方法。

URL Scheme

这是ios在很久之前推出的为了在app间通信的一种特殊链接,就是我们常说的Deep Link,比如:taobao://market.m.taobao.com/app/tmall-def/daily-welfare/pages/index?wh_weex=true,在浏览器里输入这个链接就能直接打开淘宝APP的领红包页面,可以看到URL Scheme的协议字段是自定义的,一些其他的APP URL Scheme可以看我[这篇文章](一些常用APP的URL Scheme),局限性,比如APP开发人员要维护两套逻辑,而且自定义的协议字段有可能被其他APP占用。

Universal Link

后来,由于URL Scheme的各种局限性,ios 9之后又推出了Universal Link,官网的解释如下:

Seamlessly link to content inside your app, or on your website in iOS 9 or later. With universal links, you can always give users the most integrated mobile experience, even when your app isn’t installed on their device.

通俗地讲,Universal Link可以让用户点击跳转的时候直接打开APP,并跳转到指定页面,这个和上面的Deep Link一样,只不过不用自定义协议字段,直接用通用的网址链接就可以打开APP,比如浏览器中输入https://www.xydida.com/post/2,浏览器会跳转到某个页面,同时如果安装了APP的话,就会直接打开APP对应的页面,是不是很厉害。


原文地址:https://xydida.com/2021/5/21/notes/defference-between-URL-and-URI/

本文系原创,转载请注明出处。