HTTP
(HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简洁快速的方式,使用不分布式超媒体信息系统,得以广泛地使用和发展。
它是一种详细规定了浏览器和万维网服务器之前相互通信的规则。
HTTP协议规定了报文的格式。
客户端发送给服务器的是请求报文,服务器发送给客户端的是响应报文。
1、交互的方式
请求 客户端向服务器发送
响应 服务器向客户端返回
2、数据的格式
请求时发送的数据 请求报文
响应时返回的数据 响应报文
报文格式:
请求报文
请求行
请求头
请求体
(响应报文同理)
3、http长连接和短连接的问题
HTTP应用层协议
TCP 传输层协议
Ip 网络层协议
长连接可以在创建连接后,把多个需要传输的文件都完成传输之后,再关闭连接,减少连接次数,节省资源提高效率。
缓存节省带宽并且加快了响应速度。
4、请求报文与响应报文的格式
请求首行
请求头
``` http
-主机虚拟地址
Host: localhost:8080
-长连接
Connection: keep-alive
-请求协议的自动升级[http的请求,服务器却是https的,浏览器自动会将请求协议升级为https的]
Upgrade-Insecure-Requests: 1
- 用户系统信息
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36
- 浏览器支持的文件类型
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
- 当前页面的上一个页面的路径[当前页面通过哪个页面跳转过来的]: 可以通过此路径跳转回上一个页面, 广告计费,防止盗链
Referer: http://localhost:8080/05_web_tomcat/login.html
- 浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br
- 浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
```
请求空行
请求体(GET方式信息不携带在请求体之中)
> 响应报文格式
- 响应首行(**响应行**); 协议/版本 状态码 状态码描述
- 响应头信息(**响应头**);
- 空行;
- 响应体;
5、对比GET和POST的请求
form表单发送GET请求特点
(1)由于请求参数在请求首行中已经携带了,所以没有请求体,也没有请求空行
(2)请求参数拼接在url地址中,地址栏可见\[url?name1=value1\&name2=value2],不安全
(3)由于参数在地址栏中携带,所以由大小限制\[地址栏数据大小一般限制为4k],只能携带纯文本
(4)get请求参数只能上传文本数据
(5)没有请求体。所以封装和解析都快,效率高, 浏览器默认提交的请求都是get请求比如:地址栏输入回车,超链接,表单默认的提交方式
form表单发送post请求特点
(1)POST请求有请求体,而GET请求没有请求体。
(2)post请求数据在请求体中携带,请求体数据大小没有限制,可以用来上传所有内容\[文件、文本]
(3)只能使用post请求上传文件
(4)post请求报文多了和请求体相关的配置\[请求头]
(5)地址栏参数不可见,相对安全
(6)post效率比get低
6、响应状态码
200 请求成功 浏览器会把响应内容显示在浏览器中
302 重定向,需要浏览器重新发送请求
304 使用了缓存
404 找不到对应资源
405 请求的方式不允许 get/post请求方式的错误
500 请求找到了 但服务器内部出现了错误