http协议
2019-09-11
1.什么是http协议?
http(HyperText Transfer Protocol)协议是一个基于请求与响应模式的、无状态的、应用层的传输协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
2.HTTP请求报文与响应报文格式?
2.1 请求报文由请求行、请求头、(空行)请求体组成
2.1.1请求行包含请求方法、URI、HTTP协议版本,如:POST /order/add HTTP/1.1
2.1.2 请求头由Accept(能正确接收的媒体类型)、Content-Type(实体主类的类型)、origin、Content-Length(请求体长度)、Accept-Language(内容使用的语言)、Host(服务器域名)、Accept-Encoding(内容编码)、Connection(长连接信息)、User-Agent(客户端信息)等组成
2.1.3 请求体主要包括一些请求的数据信息
2.2响应由状态行、消息报头、(空行)响应正文组成
2.2.1状态行包括协议版本 状态码 状态描述。如:HTTP/1.1 200 OK
2.2.2消息报头
2.2.3响应正文 服务器返回的一些数据信息
3.http协议中有哪些请求方式
3.1 GET:用于请求访问已经被URI识别的资源,可以通过URL传参数给服务器
3.2 POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式
3.3 HEAD:获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效
3.4 PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置
3.5 OPTIONS:查询相应URI支持的HTTP方法
3.6 DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件
4. GET方法和POST方法的区别
4.1 get重点在从服务器上获取资源,post重点向服务器发送资源
4.2 get传输数据是通过URL请求,以键值对的形式进行参数传递,参数之间使用&连接,这个过程对用户可见,post传输数据通过http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的
4.3 get数据传输量小,因为受不同的url长度限制(主要由浏览器以及web服务器决定),但效率较高;Post可以传输大量数据,所以上传文件时只能用Post方式;
4.4 get是不安全的,因为url是可见的,可能会泄露私密信息,如密码等;post较get安全性更高
4.5 get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。post支持标准字符集,可以正确传递中文字符
5. 什么是Http协议无状态协议?怎么解决Http协议无状态协议
5.1 无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息
5.2 无状态协议解决办法: 通过1.Cookie 2.通过Session会话保存
6. 网络传输过程
网络传输过程.png7.http1.0和http2.0的区别
HTTP2采用二进制格式而非文本格式
HTTP2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
http2对请求和响应的头部进行压缩,HTTP2降低了开销 压缩方式是:HAPCK
HTTP2让服务器可以将响应主动“推送”到客户端缓存中