统一资源定位符(或称统一资源定位器/定位地址、URL地址等[1],英语:Uniform / Universal Resource Locator,常缩写为URL),有时也被俗称为网页地址(网址)。如同在网络上的门牌,是因特网上标准的资源的地址(Address)。它最初是由蒂姆·伯纳斯-李发明用来作为万维网的地址。现在它已经被万维网联盟编制为因特网标准RFC 1738。
协议类型:[//服务器地址[:端口号]][/路径]文件名[?查询][#片段]
scheme://login:password@address:port/path/to/resource?query_string#fragment
- 协议名称
- 层级URL的标记符号(此项固定不变)
- 访问资源需要的凭证信息
- 从哪个服务器获取数据
- 需要连接的端口号(可选项)
- 指向资源的层级UNIX文件路
- “查询字符串”参数(可选项)
- “片段ID”(可选项)
如果客户端到服务端各层的解析没有做好,就可能出现安全问题。
保留字符和百分号编码或URL编码
URL有个重点就是编码方式。有三类,
编码:escape、encodeURI、encodeURIComponent,
解码:unescape、decodeURI、decodeURIComponent,
这三个编码函数是有差异的,甚至浏览器在自动URL编码也存在差异。
Chrome 58、Firefox 52、IE 11运行结果如下
字符 | escape | encodeURI | encodeURIComponent |
---|---|---|---|
: | %3A | : | %3A |
/ | / | / | %2F |
? | %3F | ? | %3F |
# | %23 | # | %23 |
[ | %5B | %5B | %5B |
] | %5D | %5D | %5D |
@ | @ | @ | %40 |
! | %21 | ! | ! |
$ | %24 | $ | %24 |
& | %26 | & | %26 |
' | %27 | ' | ' |
( | %28 | ( | ( |
) | %29 | ) | ) |
* | * | * | * |
+ | + | + | %2B |
, | %2C | , | %2C |
; | %3B | ; | %3B |
= | %3D | = | %3D |
解码情况是unescape可以解码上述字符的所有字符,
decodeURI只能解码上述%5B和%5D两个字符,
decodeURLComponent能解码上述的所有字符。
网友评论