统一资源定位符URL的基本结构

陪她去流浪 桃子 2019年01月14日 编辑 阅读次数:2319

概念

  • URL: Uniform Resource Locator, 统一资源定位符
  • URN: Uniform Resource Name, 统一资源名称
  • URI: Uniform Resource Identifier, 统一资源标识符

URL 和 URN 被统称为 URI。

URL在网页地址中广泛使用,而URN却不为人们所熟知。这篇文章简单介绍一下URL的结构。

URL的基本结构

最基本的URL应该可以只由两部分组成,形如:scheme:

其中的scheme是协议或方案,:是必不可少的。

比如:mailto:是一个邮件发送协议。在macOS上,在终端中执行:open mailto:即可打开默认的邮件发送程序。

:后面可以跟上由协议协议自定义的任意内容。但通常来说,是如下5个部分组成的结构:

scheme:[//authority]path[?query][#fragment]
  • scheme 协议
  • authority 来源
  • path 路径
  • query 查询
  • fragment 片段

除了协议以外,其它几个字段都可以省略。

这个结构是由 WWW 之父 Tim Lee 定义的。它影响了绝大多数URL协议的格式。将在接下来的小节中详细讨论。

HTTP中的URL的结构

以下是一个来自维基百科的URL示例:

          userinfo     host        port
          ┌──┴────┐ ┌────┴────────┐ ┌┴┐
  https://user:[email protected]:123/forum/questions/?tag=networking&order=newest#top
  └─┬─┘ └───────┬─────────────────────┘└─┬─────────────┘└──┬───────────────────────┘└┬─┘  
  scheme     authority                 path              query                      fragment

其中:

  • https是协议(或方案),:不属于它的一部分。

  • //user:[email protected]:123 整体被称作 authority

    • // 在HTTP中是必要部分
    • user:pass 用户信息。分别是用户名和密码,由:分开。后面跟上一个@。用户信息现在基本已不再使用
    • www.example.com 主机
    • 123 端口号,用:将它和主机分开
  • /forum/questions/资源路径

    • 通常,以/结束代表目录,其它代表非目录
    • 路径需要被转义(Path Escape)
  • ?tag=networking&order=newest 叫做查询

    • 注意:?属于它的一部分
    • ?后面的部分是具体的查询参数对,参数对之间通常以&连接(极少部分使用;连接)
    • 每个参数对形如:key=value。可以只有key,也可以只有key=key可以重复
    • keyvalue两者都必须先 URL Encode
  • #top 片段

    片段用来指示子资源。这在网页上,通常被用来指示浏览器定位到idtop(本例中)中元素上

未完待续

。。。

参考

标签:HTTP · URL