计算机中非常重要的概念,并不仅仅是在 HTTP
中使用。用来描述一个网络资源所处的位置,全称“唯一资源定位符”
URI
是“唯一资源标识符“标识一个变量的身份,可以使用变量的地址(C 语言),也可以使用变量的
hashcode
(Java
) 标识身份就相当于是URI
这样的东西;我们使用地址,就相当于是URL
(地址也可以起到标识身份的效果)
https://www.sogou.com/
就是一个最简单的 URL
https://
,协议的名称www.sogou.com
,域名URL
中不带端口号,浏览器就会默认给一个端口(服务器的端口,不是客户端的,也就不是系统随机分配的那个)。此处用什么端口作为默认值取决于协议:http==>80
;https==>443
结合上述 IP 地址、端口号、路径、查询字符串,就可以描述出一个网络资源了
query string
里面是自定义的键值对。在 URL
中,本身有一些特殊符号具有特定的含义(/
、:
、?
、@
…)
如果 URL
的 query string
中也包含同样的符号怎么办?
URL encode
”不仅针对标点符号,还要对汉字进行转义。因为汉字的 UTF8/GBK
等编码值其中可能某个字节就恰好和某个符号的 ASCII
码一致,此时就麻烦了
当你在浏览器中搜索
C++
的时候,+
就会被转义成%2B
+
的 ASCII 拿出来,使用十六进制表示,并且加上 %
当你在浏览器中搜索“蛋糕”的时候,“蛋糕”就会被转义成%E8%9B%8B%E7%B3%95
%
这里的 URL encode
是非常重要的。在实际开发中,当要构造一个 URL
,尤其是 URL
的 query string
中要包含中文的时候,务必要进行编码!!!