什么是 URI(统一资源标识符)?
URI 是统一资源标识符(Uniform Resource Identifier)的缩写。简单来说,URI 是一串特殊的字符,用于标识网络上的某个资源:网页、图片、文件、电子邮件地址,或任何可在线或离线获取的文档。
每个 URI 都遵循既定的语法,而且任意两个 URI 都不会完全相同。每个 URI 由方案(scheme)、授权部分(authority)、路径、查询和片段等组件构成。有些 URI 只为资源命名,另一些则会准确告诉浏览器去哪里找到它。正是这一差异把 URI 分为两大类型:URL 和 URN。
统一资源标识符是如何工作的?
URI 的作用是指明数字实体的名称和位置。浏览器读取其语法,然后为用户获取数据。常用的 URI 方案有 http、https 和 mailto,它们有助于确定如何访问资源。可以说,方案是 URI 在整个网络中运作的基础。
当您输入 URI 时,浏览器会将您引导至特定的网页或文件。如果您输入的 URI 正确,系统就会返回数据。URI 引用的作用是在线上或线下连接不同的文件和组件。
URI 语法:URI 的 5 个组成部分
每个 URI 都遵循 RFC 3986 定义的同一通用结构。一个完整的 URI 最多由五个组件构成:
- 方案:告诉浏览器使用哪种协议(例如
https、mailto、ftp、file)。 - 授权部分:通常是域名加可选的端口,例如 proxywing.com:443。
- 路径:资源在主机上的位置,例如 /glossary/uri。
- 查询:? 之后的额外参数,例如 ?id=42&lang=en。
- 片段:# 之后指向资源内部某一部分的指针,例如 #syntax。
组合在一起,URI 的形式如下:
scheme://authority/path?query#fragment
一个真实示例:https://proxywing.com/glossary/uri?ref=blog#examples。并非每个 URI 都会用到所有组件。简单的 mailto:info@proxywing.com 只有方案和路径。结构始终不变,组件只是随您所指向的资源类型而变化。
URI 的类型:URL 与 URN
URI 主要分为两种类型。
- URL(统一资源定位符)。URL 是用于定位资源的 URI。它告诉浏览器在哪里找到资源以及如何访问它。示例:https://proxywing.com/glossary/uri。所有 URL 都是 URI。
- URN(统一资源名称)。URN 是只为资源命名、而不说明其所在位置的 URI。它是一种永久标识符,即使文件被移动也不会改变。示例:urn:isbn:0451450523,它通过 ISBN 指代一本特定的书,无论哪家图书馆或网站收藏了这本书。
所有 URL 都是 URI,所有 URN 也都是 URI,但并非所有 URI 都是 URL。URI 是一个统称。URL 回答“在哪里”,URN 回答“是什么”。
常见的 URI 方案
方案是每个 URI 的第一部分,它告诉系统如何处理该资源。以下是您在网络上最常见到的几种:
- http / https —— 标准网页。示例:https://proxywing.com。
- mailto —— 打开电子邮件客户端。示例:mailto:business@proxywing.com。
- ftp —— 通过 FTP 传输文件。示例:ftp://files.example.com/report.zip。
- file —— 指向本地计算机上的文件。示例:file:///C:/Users/Admin/notes.txt。
- data —— 将数据直接嵌入 URI 中。示例:data:text/plain;base64,SGVsbG8=。
- tel —— 打开电话拨号程序。示例:tel:+15551234567。
- urn —— 只为资源命名而不定位它。示例:urn:isbn:0451450523。
每种方案对其后的内容都有各自的规则。IANA 维护着已注册 URI 方案的官方列表,随着新协议的出现,新的方案也会不断加入。
优点与缺点
URI 相当易读易用,非常适合创建一致的链接和路径。它们支持多种 URI 方案,同时可以处理大量文件或服务实例。
但 URI 语法可能变得复杂。错误的字符可能导致 URI 失效,或在浏览网页时引发错误。此外,有些 URI 如果没有正确的文件系统或访问权限就无法使用。
URI 示例
以下是不同方案下的有效 URI,每个都指向不同类型的资源:
- https://proxywing.com/about —— 网页(URL,https 方案)。
mailto:business@proxywing.com —— 电子邮件地址(URL,mailto 方案)。 - ftp://files.example.com/report.zip —— FTP 服务器上的文件(URL,ftp 方案)。
- file:///C:/Users/Admin/notes.txt —— 本地文件(URL,file 方案)。
- tel:+15551234567 —— 电话号码(URL,tel 方案)。
- urn:isbn:0451450523 —— 通过 ISBN 标识的一本书(URN)。
- urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 —— 全局唯一标识符(URN)。
请注意其中的规律:每个 URI 都以方案开头,后跟一个冒号。之后的语法取决于该方案的要求。如果语法被破坏或包含无效字符,URI 就会失效,资源也不会被返回。
常见问题
URI 代表什么?
URI 是统一资源标识符(Uniform Resource Identifier)的缩写。它是一串用于标识网络资源的字符,例如网页、文件或电子邮件地址。
URI 的全称是什么?
URI 的全称是 Uniform Resource Identifier(统一资源标识符)。该术语由互联网工程任务组(IETF)在 RFC 3986 中定义。
URI 和 URL 有什么区别?
URL 是 URI 的一种。URI 是更宽泛的术语,用于标识资源;URL 则是同时告诉您在哪里找到该资源的 URI。所有 URL 都是 URI,但并非每个 URI 都是 URL。
网络中的 URI 是什么?
在网络中,URI 是标识资源的标准方式,使系统能够找到或引用该资源。它被用于 HTTP 请求、电子邮件标头、REST API 以及许多其他协议。
编程中的 URI 是什么?
在编程中,URI 用于指向文件、端点或服务。API 通常使用 URI 来标识资源,例如 REST 端点中的 /users/42。URI 告诉应用程序要对哪个资源执行操作。
什么是请求 URI?
请求 URI 是 HTTP 请求中告诉服务器客户端需要哪个资源的部分。它通常包括路径和查询字符串,例如 /glossary/uri?ref=blog。
