HTTP,即超文本传输协议,规定了浏览器和Web服务器之间互相通信的规则。HTTP协议规定了浏览器发送给服务器的内容格式,也规定了服务器发送给浏览器的内容格式。其中,浏览器发送给服务器的内容格式叫“请求协议”;服务器发送给浏览器的内容格式叫“响应协议”。
一、请求协议
格式:
请求行;
请求头;
[这一行是空行]
请求体[请求正文];
请求行:这一行主要说明请求方法的类型(例如:GET,POST等请求方法)。
请求头:有多对键值对组成,主要说明浏览器编码格式问题。
空行:这一行很重要!!!HTTP请求头和请求体之间用一行空行分隔开,HTTP服务器根据此判断请求体的起始位置。
请求体:GET请求没有请求体;POST请求可以有请求体,请求体的内容为“参数名=参数值”的键值对。
二、请求方法
请求方法有很多,我们主要学习两种:GET请求和POST请求。
GET请求:
1、请求数据大小不能超过1Kb;
2、请求参数会显示在地址栏;
3、GET请求不能有请求体;
4、提交表单时,可以使用GET请求发送,表单内容会显示在地址栏中;
5、在地址栏中直接输入地址发送的请求,以及点击超链接发送的请求,都是GET请求;
6、点击超链接发送请求时,会在请求头中加入一行Referer键值对,它表示请求来自哪个页面,通过它可以统计导流的网站数据,还能做防盗链。
POST请求:
1、请求数据大小没有限制;
2、请求参数不会显示在地址栏中;
3、可以有请求体;
4、提交表单时,也可以用POST请求,并且请求内容不会显示在地址栏中;
5、请求参数默认使用URL编码;
6、请求体为键值对格式,当请求体中包含中文时,会使用URL编码;
7、使用POST请求时,会在请求头中添加Referer请求头,它表示请求来自哪个页面,通过它可以统计导流的网站数据,还能做防盗链;
8、使用POST请求时,会在请求头中添加Content-Length请求头,它表示请求体的大小,以字节计算;
9、使用POST请求时,会在请求头中添加Content-Type请求头,默认值是application/x-www-form-urlencoded,它表示请求体内容使用URL格式编码。
三、响应协议
格式:
响应行;
响应头;
[这一行是空行]
响应体[响应正文];
响应行:这一行主要说明服务器是否响应,请求是否成功,这一行会包含一个响应码。
响应头:这一行由多对键值对组成,说明响应体使用的编码格式及数据大小的信息。
空行:这一行很重要!!!浏览器根据此行判断响应体的起始位置。
响应体:一般是web服务器发送给浏览器的静态资源,如HTML页面。
四、响应码
响应码又叫做响应状态码,通过响应码,浏览器才能明白响应的真正含义:
200:请求成功;
404:请求的资源没有找到,说明浏览器请求了一个不存在的资源,是客户端的错误;
500:请求的资源找到了,但服务器内部出错,是服务器端的错误;
302:重定向。服务器在发送302响应码的同时,还会在响应头中添加Location响应头,它指定了一个新的URL。当浏览器收到302响应码时,会根据Location响应头中的 URL地址重新发送一遍请求给服务器。
304:缓存,表示浏览器请求的静态资源没有发生改变。这样浏览器直接从缓存中加载该静态资源,节省了网络开销的时间。