5 分钟搞懂 URI、URL 和 URN

简介: 5 分钟搞懂 URI、URL 和 URN

当我们上网的时候,浏览器地址栏里显示的那一串字符串是什么意思?这串字符叫 URL,是 URI 的一种,还有个兄弟叫 URN,这篇文章就带你了解这几个概念。原文:URI vs URL vs URN[1]


image.png


当我们处理互联网和在线内容时,URI、URL 和 URN 是我们能听到的最熟悉的单词,下面让我们深入了解它们的含义……


URI - 统一资源识别符(Uniform Resource Identifier)


URI 是标识所有连接到万维网(World Wide Web)的资源的通用术语,是用来标识逻辑资源或者物理资源的字符串序列。换句话说,它可以用来识别互联网上的资源的位置、或名称、或两者兼有。URI 有两个主要的子集,即 URL 和 URN。


image.png


URI 语法:scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]


URI 示例foo://example.com:8042/over/there?name=ferret#nose


Scheme:URI 的起始点,并与 URI 协议相关。URI schema 对大小写不敏感,后面带有一个“:”。尽管在实践中可以使用未注册的 schema,但 URI schema 应该向 Internet Assigned Numbers Authority (IANA)注册。几个流行的 URI schema 的例子:HTTP、HTTPS、FTP 和 mailto。


Authority(权限):Authority 字段是位于 schema 字段之后的第二个条目,以两个斜杠(//)开头。这个字段由多个子字段组成:

  • authentication(认证信息)-可选的字段和用户名,密码,由冒号隔开,后面跟着“@”符号
  • host(主机名)—注册的名称或 IP 地址,出现在“@”符号之后
  • port(端口号)-可选字段,后面跟着一个冒号


Path(路径):Path 是第三个字段,由斜杠分隔的段序列来表示,用来提供资源的位置。注意,不管 authority 部分存在或不存在,path 都应该以一个斜杠开始,而不是双斜杠(//)。


Query(查询):Query 是第四个字段,是 URI 的可选字段,包含一串非结构数据并以“?”和 Path 隔开。


Fragment(片段):Fragment 是第五个组成部分,也是一个可选字段,提供指向辅助资源的方向,并以“#”开始。简单来说,Fragment 字段可以用于指向 HTML 页面的特定元素(主资源)。


URL - 统一资源定位符(Uniform Resource Locator)


如上所述,URL URI 的一个子集。URL 是一个给定唯一 Web 资源的地址,表明了这个唯一的 Web 资源的位置,用户可以通过 URL 浏览互联网。如果我们在任何应用程序中点击任何超链接,它会将我们重定向到相关的 URL,这些 URL 也可以很容易的输入到浏览器地址栏中,并可以加载特定的资源。


URL 语法scheme://host:port/path?query-string#fragment-id


URL 示例: https://medium.com/p/51b8167cafad


Scheme:URL 的第一部分,表示浏览器请求资源时必须使用的协议。常见例子有 HTTPS(安全版本)和 HTTP(非安全版本)。


Authority:Authority 是 URL 的第二个字段,同样使用“//”开头,包含一些子部分:

  • host(主机名)—分配给主机的域名或 IP 地址,是主机的本地名称和它的父域名的组合
  • port(端口)—表示用于访问 Web 服务器上特定资源的标识,通常 80 表示 HTTP, 443 表示 HTTPS,这是一个可选字段


Path to resource(资源路径):路径是 URL 的第三个字段,是 Web 服务器上资源的路径


Query(查询):查询是 URL 的第四个字段,由传递给服务器端脚本的数据组成,并在 Web 服务器上运行。查询将执行带有“?”的搜索参数,参数通常由名字和值对组成的字符串组成,并由“&”分隔。


Fragment Identifier(片段标识符):片段是可选字段,用于表示页面中的位置,由“#”标识片段标识符。


URN - 统一资源名(Uniform Resource Name)


URN 是一种具有静态名称的互联网资源,即使它的数据被移动到另一个位置也仍然有效。URL 在内容被移动后就失效了,与之不同的是,URN 可以始终跟踪 Web 上某些数据的资源,从而解决了频繁移动数据的问题。


更进一步的,我们可以说,当用户知道唯一资源的位置时,可以使用 URL,但 URN 只需要知道特定资源的名称,而不用指定其位置。


URN 语法:scheme:NID: NSS


URN 示例:urn:ISSN:0167–6423


Scheme:URN 的前导部分,以“:”结尾,不区分大小写


NID(Namespace ID):URN 的第二个字段,是向 IANA 注册的命名空间标识符。NID 后面跟着一个":",可以由字母、数字和" - "组成。


NSS(Namespace Specific String):NID 之后的下一个字段,是一个特定于命名空间的字符串。NID 确定 NSS 的语法解释。NSS 可以由 ASCII 字母、数字、标点符号和特殊字符组成。


  • 2017 年之后,又添加了 q-component 和 r-component,用于向命名资源和解析器传递参数。

区分识别 URI、URL 和 URN 的小技巧

  • URL 是一个可以检索网络资源的链接;URN 是唯一标识符,但不能创建可单击的链接。
  • 人们经常用名字作为例子来描述 URI 和 URN。人的名字就像 URI,因为它标识了一个人,但并没有告诉你在世界上的哪个地方可以找到这样一个特定的人,甚至也没有告诉你我们谈论的是哪个人。
  • 简单的名字不能作为 URN 的例子,因为没有唯一性,世界上有很多人有同样的名字。URN 是一个带有全局唯一标识符的名称,如身份证号或社会保险号。
  • 在网络中,URN 很容易被发现。


本文到此结束,如果你正好想要了解关于 URI、URL 和 URN 的知识,希望这篇文章对你有用。


感谢阅读本文…!!!🤗🤗🤗


References:

[1] https://enlear.academy/uri-vs-url-vs-urn-51b8167cafad



目录
相关文章
|
5月前
|
XML 数据格式
蓝易云 - URI和URL和URN区别
总的来说,URI是一个广义的概念,包括URL和URN。URL提供了资源的位置信息,URN提供了资源的唯一名称。
50 2
|
6月前
|
数据安全/隐私保护
URI 和URL 的区别是什么?
URI 和URL 的区别是什么?
401 0
|
11月前
|
PHP
URI和URL的区别
URI和URL的区别
|
自然语言处理
HTTP协议中 URI、URL、URN
HTTP协议中 URI、URL、URN
164 0
URL、URI、URN详解
URI 属于 URL 更高层次的抽象,一种字符串文本标准。 就是说,URI 属于父类,而 URL 属于 URI 的子类。URL 是 URI 的一个子集。 二者的区别在于,URI 表示请求服务器的路径,定义这么一个资源。而 URL 同时说明要如何访问这个资源。
|
分布式计算 监控 Scala
日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
174 0
日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
|
数据安全/隐私保护
URI 和URL 的区别是什么?
大家好,我是阿萨。昨天学习了HTTP方法有哪些?了解了HTTP的最基本的方法。昨天讲解Head 方法的时候说返回URI 相关内容。阿萨问大家一个问题:URI 是什么?
167 0
|
2月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
46 0
|
3月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
3月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
45 0