查了一些资料个人理解http请求是建立在3次tcp协议之后http才正式开始请求数据,如果说的有问题还请见谅看看就行。
1.先建立tcp连接,TCP就像人类的语言一样,要使计算机连成的网络能够互通信息,需要有一组共同遵守的通信标准,这就是网络协议,不同的计算机之间必须使用相同的通讯协议才能进行通信
2.在http请求之前会进行3次TCP连接,TCP会向服务器发送一次请求,好理解点就是统一下语言,你能听懂我说的吗,也就是第一次握手。
3.在服务器接收到浏览器的请求,服务起开始响应浏览器,好理解点我能听懂你说的,您能听董我说的吗。这就是第二次的握手。
4.浏览器在接收到服务器响应后,浏览器开始发送请求,好理解点就是,嗯 可以,我可以问你个问题吗,这就是第三次握手。
5.建立TCP连接之后,发起HTTP请求。
6.http请求由三部分组成:请求行 请求头和请求正文
请求行:用于描述客户端的请求方式,请求的资源名称以及使用的HTTP协议的版本号(例:GET/books/java.html HTTP/1.1)
请求头:用于描述客户端请求哪台主机,以及客户端的一些环境信息等
注:这里提一个请求头 Connection,Connection设置为 keep-alive用于说明 客户端这边设置的是,本次HTTP请求之后并不需要关闭TCP连接,这样可以使下次HTTP请求使用相同的TCP通道,节省TCP建立连接的时间
请求正文:当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中(GET方式是保存在url地址后面,不会放到这里)
7..服务器端响应http请求,得到服务器返回的数据
HTTP响应也由三部分组成:状态码,响应头和实体内容
状态码:状态码用于表示服务器对请求的处理结果
列举几种常见的:200(没有问题) 302(要你去找别人) 304(要你去拿缓存) 307(要你去拿缓存) 403(有这个资源,但是没有访问权限) 404(服务器没有这个资源) 500(服务器这边有问题)
若干响应头:响应头用于描述服务器的基本信息,以及客户端如何处理数据
实体内容:服务器返回给客户端的数据
8、Ajax的请求过程。
1.创建XmlHttpRequest对象,ActiveXObject兼容IE浏览器
let xhr = XMLHTTPRequest()
let xhr = ActiveXObject('Mircosoft.XMLHTTP');
2.创建与服务器的连接的请求
xhr.send(get, url, false)
3.监听对象状态的改变
xhr.onReadyState()
4.向服务器发送数据
xhr.send()
5.处理请求回来的数据。
callback()