URL

作者: 星流星 | 来源:发表于2018-09-20 19:40 被阅读0次

URL语法

通用URL组件

组件 描述 默认值
方案 访问服务器以获取资源时需要使用那种协议
用户 某些方案访问资源是需要使用用户名 匿名
密码 用户名后面可能要包含的密码,中间由冒号(:)分隔 <E-mail地址>
主机 资源宿主服务器的主机名或点分IP地址
端口 资源宿主服务器正在监听的端口号,很多方案都有默认的端口号(HTTP默认的端口号是80) 每一个方案特有
路径 服务器上的资源的本地名,由一个斜杠(/)与其他前面的URL组件分隔开来。组件的语法是与服务器方案有关的
参数 某些方案会用这个组件来执行输入参数。参数为名/值对,URL中可以包含多个参数字段,它们相互之间以与路径的区域部分之间使用(;)分隔
查询 某些方案会用这个组件传递参数已激活应用程序(比如数据库、公告板、搜索引擎以及其他因特网网关)。查询组件的内容没有通用格式。用字符“?”将其与URL的其余部分分隔看来
片段 一小片或一部分资源的名字。引用对象时,不会将flag字段传送给服务器,这个字段是在客户端内部使用的,通过"#"将其与URL的其余部分分隔开来

方案指的是这个URL使用的是什么协议,常见的协议有http、https、ftp、ssh等。

主机名一般可以使用IP或者域名来指定。

HTTP的默认端口是80,如果URL中没有指定端口号,那么就是使用的是默认的。

用户名和密码一般使用的比较少。

路径指的是资源字服务器中的位置。

参数在URL中也不常见,常见的是查询参数。

片段:有一些资源类型,比如HTML,除了资源之外,还可以进行进一步的划分。比如,对于一个带章节的文档来说,资源的URL会指向整个文档,但是有时候却想要获取具体的某一个章节。
URL支持使用片段(frag)组件来表示一个资源内部的片段。比如,URL可以指向文档中的一个特定的小结。
片段使用一个“#”将其和前面的其它部分分开。
例如

https://blog.csdn.net/starexplode/article/details/78481029#1-%E5%9C%B0%E5%9D%80%E8%BF%90%E7%AE%97%E7%AC%A6

URL编码

URL中的字符只支持US-ASCII,它并不支持汉字和其它字符,而且,有些URL中还可能会有二进制。所以URL就由于转义序列。通过转义序列,就可以使用US-ASCII字符集的有限子集对字符值或数据进行编码了。

编码机制

为了避开安全字符集表示法带来的限制,人们设计了一种编码机制,用来在URL中表示各种不安全的字符。这种编码机制就是通过“转义”表示发来表示不安全的字符。这种转义法包含一个百分号(%),后面跟着两个表示字符ASCII码的16进制。

示例:
|字符|ASCII码|表示|
|~|126(0x7E)|%7E|
|空格|32(0x20)|%20|
|%|37(0x25)|%25|

字符限制

在URL中,有几个字符被保留起来了,有着特殊的含义,有些字符不在US-ASCII可打印字符集中。还有些字符会与因特网的网关和协议产生混淆。

下表中列出了一些字符,在将其用于保留用途之外的场合时,要在URL中对其进行编码。

字符 保留/受限
% 保留作为编码中的转义标志
/ 保留作为路径组件中分隔路径段的界定符
. 保留在路径中使用
.. 保留在路径中使用
# 保留作为分段界定符使用
? 保留作为参数界定符使用
; 保留作为查询字符串界定符使用
: 保留作为方案,用户/口令,以及主机/端口组件的界定符使用
$,+ 保留
@&= 在某些方案的上下文有特殊含义,保留
{} ^~[]' 用于各种传输Agaent代理。比如网关不安全处理,使用受限
<>" 不安全,这些字符在URL范围之外通常是有意义的,比如在文档中对URL自身进行界定,应该对其进行编码
0x00-0x1F,0x7F 受限,这些十六进制范围内的字符都在US-ASCII字符集的不可打印区间
>0x7F 受限,十六进制在此范围内的字符都不在US-ASCII字符集的7位而进制范文内

相关文章

网友评论

      本文标题:URL

      本文链接:https://www.haomeiwen.com/subject/aczkgftx.html