浏览互联网资源
前面在概述篇中我们已经提到,URL 是统一资源定位符(Uniform Resource Location)的英文缩写,是浏览器寻找信息时所需的资源位置描述,通过 URL,才能找到、使用并共享互联网上大量的数据资源。
URI(统一资源标识符)是一类更通用的资源标识符,URL 实际上是它的一个子集。URI 是一个通用的概念,有两个主要的子集 URL 和 URN 构成,URL 是通过描述资源的位置来标识资源的,而 URN 则是通过名字来识别资源的,与它们当前所处的位置无关。
HTTP 规范将更通用的概念 URI 作为其资源标识符,但实际上,HTTP 应用程序处理的只是 URI 的 URL 子集。
以 https://blog.kaixindeken.top/categories/note 为例,URL 分为以下三个部分:
- URL 的第一个部分是方案(scheme),这里是 https(怎样访问资源)。
- URL 的第二个部分是域名(host),告知资源位于何处(服务器的位置),这里是 blog.kaixindeken.top。
- URL 的第三个部分是资源路径,说明了请求服务器上哪个特定的本地资源,这里是 /categories/note。
URL 语法
URL 的语法因方案不同而略有差异,大多数 URL 方案的 URL 语法都建立在这个由 9 个部分组成的通用格式上:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
以下是上述每个部分的描述信息:
我们日常看到的 URL 大多是
URL 编码
URL 通常使用 ASCII 字符集,对于不安全的字符则使用「%+两个ASCII码的十六进制数」进行编码,以便在任何系统中都可以被解析,从而实现可移植性和完整性。
客户端应用程序在向其他应用程序发送任意 URL 之前最好把所有不安全或受限字符进行编码。在 PHP 中,我们通常使用 urlencode 对 URL 进行编码。
URL scheme
URL 方案(scheme)除了常见的 http 和 https 之外,还有很多其他方案,比如 ftp、mailto、file 等,这些我们平时偶尔也会在浏览器地址栏中用到,不同方案的 URL 格式基本一致:
ftp:从 FTP 服务器上传或下载文件,一般格式为 ftp://
rtsp、rtspu:可以通过实时流传输协议解析的音视频媒体资源的标识符,一般格式为 rtsp://
mailto:指向的是电子邮箱地址,比如 mailto:yaojinbu@outlook.com,访问该 URL 会向指定邮箱用户发送邮件;
file:表示一台指定主机上可以直接访问的文件,一般用于本地、网络文件系统或其他文件共享系统(比如网络邻居)文件的访问,一般格式为 file://
news:可用于访问特定的文章或新闻组;
telnet:用于访问交互式业务,表示的并不是对象自身,而是可通过 TELNET 访问的交互式应用程序
相关资源
更多关于 URL 的信息,可以参考以下资源:
W3C 有关 URI 和 URL 命名和寻址的页面
统一资源定位符 RFC 1738
URL 通用语法 RFC 2396
URN 语法 RFC 2141
评论区