1)概述

HTTP 全称为超文本传输协议,所谓超文本就囊括了网络上的各种消息类型【最重要的是提供从一个超文本跳转到另一个超文本的超链接】,基本上可以讲这个协议就是用来约束/统一点到点之间交流的标准。此外还应该了解到 HTTP 是无状态的协议,也就是并不会记录下历史的传输信息,这降低了协议维护的成本。HTTP使用TCP作为传输协议,默认应用端口为80。

2)主要字段

① host:代表请求的主机,例如 www.baidu.com
② connection:代表连接方式,HTTP1.1默认长连接keep-alive,这个字段主要是兼容HTTP1.0;
③ content-type:用于标识本次请求内容的类型;
④ accept:用于表示自己可以接受的类型;
⑤ content-length:用于表示本次回应数据的大小;
⑥ content- encoding:表示本次数据压缩方法【gzip、deflate等】;
⑦ accept-encoding:表示自己可以接受的压缩方法;

3)状态码

1xx:代表请求正在处理中。
2xx:200 代表请求成功,一般数据会存在body中;201 代表请求成功但body中无数据;204 代表请求部分成功,常用在分片上传、断点续传中。
3xx:一般代表重定向,301 代表永久重定向;302 代表临时重定向;304 代表请求数据无变更,重定向到缓存数据。
4xx:客户端错误,400 代表笼统的报文错误;403 代表访问资源被禁止;404 代表资源找不到。
5xx:服务端错误,500 代表笼统的服务端出错;501 代表该功能还未实现;502 代表代理服务器正常但请求的后端服务挂了;503 代表服务器当前忙。

4)GET and POST

GET:用于请求获取数据,参数明文带在URL中,可以被缓存下来,字符类型和长度均有限制;
POST:用于请求更新数据,数据存放在body中,不会被缓存,相对安全,字符类型大小无限制。
最主要的一点是,GET 是安全幂等的,安全指的是不会修改到数据,幂等指的是多次操作产生的结果是一致的;POST 是不安全不幂等的,不安全指的是请求可能会修改数据,不幂等指的是多次请求更新的结果不一定一致。

5)特点

优点:HTTP 1.1 相较于 1.0 连接方式默认使用长连接,这样可以避免长期连、断产生的开销;另一方面HTTP 是无状态的,节省了维护状态的开销; 最后,HTTP 是明文传输的,可以方便调试;
缺点:无状态代表我们如果需要状态信息的时候要自己去手动维护【解决:Cookie】,明文传输代表着不安全,只要截获报文包即可查看内容【解决:HTTPS】。