介绍

URL(Uniform Resource Locator 统一资源定位符)是万维网上资源的地址。url有一个定义良好的结构,万维网的发明者蒂姆·伯纳斯·李在RFC 1738中阐述了这个结构。

每个URL都确认了一个通用语法,看起来像这样:

scheme:[//[user:password@]host[:port]]path[?query]

URL语法的某些部分,如[user:password@],由于安全原因,已被弃用,很少使用。下面是一个URL的例子,你经常在互联网上看到:

https://www.google.com/search?q=hello+world#brs

对于定义统一资源定位器(url)语法的初始RFC,已经做了许多改进。目前定义通用URI语法的RFC是RFC 3986。这篇文章包含了来自最新RFC文档的信息。

URL Encoding (Percent Encoding)

URL由属于US-ASCII字符集的一组有限字符组成。这些字符包括数字(0-9)、字母(a-z, a-z)和一些特殊字符(“-”,“。”,“_”,“~”)。

ASCII控制字符(例如退格、垂直制表符、水平制表符、换行符等),不安全字符如空格、\、<、>、{、}等,以及ASCII字符集以外的任何字符都不允许直接放置在url中。

此外,url中还有一些具有特殊含义的字符。这些字符称为保留字符。保留字符包括?、/、#、:等。作为URL的一部分传输的任何数据,无论是在查询字符串或路径段中,都不能包含这些字符。

那么,当我们需要在URL中传输包含这些不允许字符的任何数据时,我们该怎么做呢?我们对它们进行编码!

URL Encoding将URL中保留的、不安全的、非ascii字符转换为所有web浏览器和服务器普遍接受和理解的格式。它首先将字符转换为一个或多个字节。然后,每个字节由两个前带百分号(%)的十六进制数字表示(例如%xy)。百分号用作转义字符。

URL编码也称为百分比编码,因为它使用百分号(%)作为转义字符。

URL编码的例子

空格:您可能遇到的最常见的URL编码字符之一是空格。十进制空格字符的ASCII值是32,转换成十六进制就是20。现在我们只需要在十六进制表示法的前面加上一个百分号(%),就会得到经过编码的URL值- %20。

ASCII字符编码参考

下表是ASCII字符对其对应URL Encoded表单的引用。

DecimalCharacterURL Encoding (UTF-8)
0NUL(null character)%00
1SOH(start of header)%01
2STX(start of text)%02
3ETX(end of text)%03
4EOT(end of transmission)%04
5ENQ(enquiry)%05
6ACK(acknowledge)%06
7BEL(bell (ring))%07
8BS(backspace)%08
9HT(horizontal tab)%09
10LF(line feed)%0A
11VT(vertical tab)%0B
12FF(form feed)%0C
13CR(carriage return)%0D
14SO(shift out)%0E
15SI(shift in)%0F
16DLE(data link escape)%10
17DC1(device control 1)%11
18DC2(device control 2)%12
19DC3(device control 3)%13
20DC4(device control 4)%14
21NAK(negative acknowledge)%15
22SYN(synchronize)%16
23ETB(end transmission block)%17
24CAN(cancel)%18
25EM(end of medium)%19
26SUB(substitute)%1A
27ESC(escape)%1B
28FS(file separator)%1C
29GS(group separator)%1D
30RS(record separator)%1E
31US(unit separator)%1F
32space%20
33!%21
34"%22
35#%23
36$%24
37%%25
38&%26
39'%27
40(%28
41)%29
42*%2A
43+%2B
44,%2C
45-%2D
46.%2E
47/%2F
480%30
491%31
502%32
513%33
524%34
535%35
546%36
557%37
568%38
579%39
58:%3A
59;%3B
60<%3C
61=%3D
62>%3E
63?%3F
64@%40
65A%41
66B%42
67C%43
68D%44
69E%45
70F%46
71G%47
72H%48
73I%49
74J%4A
75K%4B
76L%4C
77M%4D
78N%4E
79O%4F
80P%50
81Q%51
82R%52
83S%53
84T%54
85U%55
86V%56
87W%57
88X%58
89Y%59
90Z%5A
91[%5B
92\%5C
93]%5D
94^%5E
95_%5F
96`%60
97a%61
98b%62
99c%63
100d%64
101e%65
102f%66
103g%67
104h%68
105i%69
106j%6A
107k%6B
108l%6C
109m%6D
110n%6E
111o%6F
112p%70
113q%71
114r%72
115s%73
116t%74
117u%75
118v%76
119w%77
120x%78
121y%79
122z%7A
123{%7B
124 %7C
125}%7D
126~%7E
127DEL(delete (rubout))%7F

参考

RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax.


来了老弟
508 声望31 粉丝

纸上得来终觉浅,绝知此事要躬行


« 上一篇
vue引入sass

引用和评论

0 条评论