http从发起请求到结束响应到结束响应都经历了什么?
作为一个前端开发新手,我们最常做的事情除了根据UI设计稿的,高保真的实现页面布局。
除此之外,我们最常见的就是调用后台提供的接口,根据返回的数据进行渲染。然而作为最常进
行的操作,对之前的自己来说却宛如一个黑箱子。知道往箱子里面放什么,自己会拿到什么,但
也是因为这样经常会产生疑惑?
发起的请求究竟是怎样传递到服务器的,服务器的响应又是怎样回传到浏览器的。今天集中
学习了一下,把自己了解到的做一个分享和记录。
一,输入域名,如https://www.baidu.com
二,根据域名确定IP:先在本地hosts的缓存中查找,没有再一级一级往上层DNS服务器中查找
三,建立与服务器的连接🔗
在这个过程中就会涉及HTTP协议和TCP协议。
目前的互联网应用被分为5层,从上到下分别是:应用层、传输层、网络层、链路层、物理层。
其中作为我们前端开发人员需要关注的就是应用层,但应该了解到其他层。当从DNS服务器中获取
了服务器的IP后,我们就需要和服务器建立起连接。此时我们会向服务器发送一段字符串,而这个
字符串是根据大家都约定好的HTTP的协议去组织的。包括请求行、请求头、请求体。请求行:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
③是协议名称及版本号。
请求头:
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
与缓存相关的规则信息,均包含在header中
请求体:
⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。