URL简介

URL简介

每个服务器资源都有一个自己的名字,服务器资源名被称为统一资源标识符(URI),用于唯一标识标识并定位资源。URI 是一个通用的概念,由两个主要的子集 URL 和 URN 组成。 URL是通过描述资源的位置来标识资源的,而 URN 是通过名字来标识资源。

http规范将更通用的 URI 作为资源标识符,但http应用程序实际使用中,更常见的是处理URL。

URL 语法

大部分 URL 方案的 URL语法格式如下:

<scheme>://<user>:<password>@<host>:<port>/<path>;<parame>?<query>#<frag>

URL 最常用的3个部分是方案(scheme),主机(host)和路径。组件的介绍如下:

组件 描述 默认值
方案(scheme) 访问服务器获取资源时使用的协议。
用户(user) 某些方案访问资源时的用户名。 匿名
密码(password) 用户名后面可能需要的密码,中间冒号隔开。
主机(host) 资源所在服务器的IP或主机名。
端口(port) 协议特有。
路径(path) 服务器上资源的本地名,由一个/与前面的组件分隔开,路径组件语法与服务器和协议相关。
参数(parame) 某些协议会使用这个组件来指定输入参数,参数为键值对(等号连接),URL中可以包含多个参数,它们之间以及与路径的其它部分用分号隔开
查询(query) 某些协议会使用这个组件传递参数,参数为键值对(等号连接),多个参数&连接
片段(frag) 一小部分资源的名字,不会将#及其后面的发送给服务器,仅在客户端使用

绝对和相对URL

URL有两种方式:绝对和相对。

相对 URL 是不完整的,要从相对 URL中获取访问资源就必须相对于另一个URL 进行解析。然后,根据相对URL的语法,将它与基础URL组合以形成其绝对形式。

通常会在html文档中看到相对URL。在这种情况下,有两种方法可以找出基础URL是什么。

  • 可能在文档中明确指定了基本URL 标签。
  • 如果未指定基本URL,则应将找到相对URL的html文档的URL视为基础URL。

下图是基于相对 URL和基础 URL生成最终 URL的流程:

relative url

URL中的特殊字符

在 URL中有几组特殊字符需要注意:

  • 保留字
字符 描述
% 保留字,编码字符的转义标志
# 保留字,分段定界符
; 保留字,参数定界符
/ 保留字,路径分隔定界符
... 保留字,路径组件中使用
? 保留字,查询定界符
: 保留字,用户密码定界符,主机端口定界符
@ 保留字,某些 scheme 中有特殊意义
& 保留字,某些 scheme 中有特殊意义
= 保留字,某些 scheme 中有特殊意义
+ 保留字
$ 保留字
, 保留字
  • 不希望出现的字符
字符 描述
{,},` ,`,^,[,],”`“,~ 由于 agent 代理和网关的问题,使用受限
<,>," 不安全,这些字符在URL 之外通常是有意义的,例如,在文档中对URL自身定界,可能造成使用上的歧义
超出US-ASCII字符集的字符 URL使用的是 US-ASCII字符集

URL通过转义来实现表达上诉字符的功能,这种转义表达方式为: %后面跟上两个表示 ASCII 码的16进制数。

字符 转义
% %25
space %20
tab %09
= %3D

汉字“春节”不是URL的合法字符,所以被浏览器自动转成 %E6%98%A5%E8%8A%82

其中,“春”转成了%E6%98%A5,“节”转成了%E8%8A%82。这是因为“春”和”节“的UTF-8编码分别是E6 98 A5E8 8A 82,将每个字节前面加上百分号,就构成了URL编码。

-------------本文结束感谢您的阅读-------------
坚持分享,您的支持将鼓励我继续创作!
0%