言简意赅,url干嘛的?


一、url干嘛的

我们把互联网比作一个巨大的城市,那么互联网资源就是其中的电影院、便利店、火车站,为我们提供各种各样的服务。那我们怎样才能找到这座城市中的某个电影院呢?当然是要有地址,类比一下,url在互联网中也是起到这个作用,方便你在海量的互联网资源中找到特定的资源。

二、url怎么看

比如说这么一段,http://new.qq.com/omn/20191203/20191203A063FK00.html。

我们要分为三段去看。

1.第一部分是url的方案。即告诉web客户端怎样访问资源,这个例子中使用的是http协议。
2.第二部分指的是url的服务器位置。即告诉web客户端资源在哪里。
3.第三部分是资源路径。路径说明了请求的是服务器上哪个特定的资源。
在这里插入图片描述

三、url的语法

url提供了一种定位互联网上任意资源的手段,随着访问方案的不同,url语法也稍有不同。

通常由9个部分组成。

组件 描述 默认值
方案 使用哪种协议
用户 某些方案访问时需要的用户名 匿名
密码 用户名后可能要包含密码 E-mail地址
主机 服务器主机名或IP地址
端口号 服务器正在监听的端口号 特有(http默认80)
路径 服务器上资源的本地名
参数 某些方案会用这个组件来指定参数
查询 某些方案会用这个组件传递参数。这个组件没有通用格式,且用“?”将其与URL的其他组件分割开来
片段 一小片或者一部分资源的名字。

其中最常用的是“方案”、“主机”、“路径”、“查询”这四个组件。

例如,http://hm.tmall.com/shop/view_shop.htm?user_number_id=3676232520,方案是http;主机是hm.tmall.com;路径是/shop/view_shop.htm;查询是user_number_id=3676232520。

1.方案

用什么协议。方案实际上是规定如何访问指定资源的标识符,它会告诉负责解析url的应用程序应该使用什么协议。

方案(1)必须以一个字母符号开始,由第一个“:”符号将其与url的其他部分分割开来;(2)大小写不敏感,“http://www.taobao.com/”与“HTTP://www.taobao.com/”是等价的。

2.主机

要想在互联网上找到资源,应用程序要知道在什么地方可以找到能对目标资源进行访问的服务器。

主机组件标识了互联网上能够访问资源的宿主机器。可以用主机名或者IP地址来表示主机名。比如,下面两个url都指向了同一个资源。

https://www.taobao.com/
https://140.205.94.189/

3.路径

资源位于服务器的什么地方。url的路径组件说明了资源位于服务器的什么地方。

4.查询

我们使用get提交方式的时候,这个组件是最常见的,还是刚才的例子,在“”之后的就是查询组件。
http://hm.tmall.com/shop/view_shop.htm?user_number_id=3676232520。

当有多个查询字符串的时候我们用“&”分割一下:http://sony.tmall.com/p/rd512561.htm?spm=a21bo.2017.201863-5.d2.5af911d9IPnDyn&scm=1049.lyg_turing_-1_182.129363.129363-THJH_189962&turing_bucket=1&lygClk=1&impid=eyN0WcEagr8

四、url快捷方式

1.绝对url

上面我们介绍到的都是决定url,即包含访问资源所需的全部信息

2.相对url

相对url是url的一种便捷缩略记法。使用到html开发前端页面的使用,这种写法非常常见。例如:

<img src="../lib/images/top12.jpg" style="height:100%;position: relative;margin: 0px; ">

使用相对url写法,开发人员可以省略url中的方案、主机和其他组件。这写组件可以从它们所属资源的基础url中推到出来。

3.自动扩展url

一些浏览器会在用户提交url之后,或者在用户输入的时候尝试自动扩展url。这就为用户提供了一条便捷之路,用户不需要输入完成的url,因为浏览器会自动扩展。

主机名扩展
例如在地址栏中输入taobao,浏览器会自动在主机名中插入www.和.com。

历史扩展
浏览器可以将用户访问过的url存储起来,当你输入url时,浏览器就可以将你输入的url与历史记录中的url进行匹配,并提供一些完整的选项供你选择。

五、url字符集

URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。这是因为网络标准RFC 1738做了硬性规定:

“…Only alphanumerics [0-9a-zA-Z], the special characters “$-_.+!*’(),” [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL.”

“只有字母和数字[0-9a-zA-Z]、一些特殊符号”$-_.+!*’(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"

如果想详细了解url编码,请参考这篇博客:关于url编码

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章