有意思 有意思
今天我们来看看URI和URL到底是啥关系,是父子还是仇人?
hhhh进入正题
URI,也就是统一资源标识符(Uniform Resource Identifier)。因为它经常出现在浏览器的地址栏里,所以俗称为“网络地址”,简称“网址”,URI包含有 URL 和 URN 两个部分。
URI 主要有三个基本的部分构成:
http://nginx.org/en/download.html
1.协议名:即访问该资源应当使用的协议,在这里是“http”;
2.主机名:即互联网上主机的标记,可以是域名或 IP 地址,在这里是“nginx.org”;
3.路径:即资源在主机上的位置,使用“/”分隔多级目录,在这里是“/en/download.html”。
URL,统一资源定位符(Uniform Resource Locator),是URI的子集,也就是说每个URL都是URI
URN,统一资源名称(Universal Resource Name)。URN只命名资源而不指定如何定位资源,比如urn:isbn:0451450523指定了一本书的ISBN,可以唯一标识这本书,但是没有指定到哪里定位这本书,这就是URN。
目前的互联网中,URN用得非常少,所以几乎所有的URI都是URL,一般的网页链接我们既可以称为URL,也可以称为URI。
现在来详细看看URI的基本组成:
1.scheme 代表协议名,例如http,https,ftp
2.host指的是主机名 port指的是端口号, HTTP 的默认端口号是 80,HTTPS 的默认端口号是 443。
3.path指的是路径
4.query指的是查询参数,参数为“key=value”的字符串格式,用&连接
现在来详细看看URI的完整格式:
完整格式比基本格式多了一个#fragment 和 user:passward@
“user:passwd@”,表示登录主机时的用户名和密码,但现在已经不推荐使用这种形式了(RFC7230),因为它把敏感信息以明文形式暴露出来,存在严重的安全隐患。
#fragment”,它是 URI 所定位的资源内部的一个“锚点”或者说是“标签”,浏览器可以在获取资源后直接跳转到它指示的位置。
接下来我们再看看URI编码
URI 里使用英语以外的汉语、日语等其他语言时,URI会将其转义,转义的规则有点“简单粗暴”,直接把非 ASCII 码或特殊字符转换成十六进制字节值,然后前面再加上一个“%”。例如“银河”会被转义成“%E9%93%B6%E6%B2%B3”
哈哈哈,URI和URL还傻傻分不清楚嘛。