一、get 和 post有什么区别?
1.请求参数:
- get:直接附加在url后面,问号分隔,多参数用&链接,请求长度有限制
- post:参数在请求体中,请求长度无限制
2.安全性:
- get: 参数暴露在 URL 中,容易被他人获取,安全性低,适合获取数据。
- post:参数在请求体中,相对安全,适合提交敏感信息,如登陆密码等
3.幂等性:
- get:多次请求相同的URL,得到的结果一致。
- post:多次提交可能会导致不同的结果,例如多次提交订单会创建多个订单
4.缓存:
- get:请求结果通常会被浏览器缓存,因为幂等且安全
- post:请求一般不会被缓存
5.应用场景:
- get:常用于获取资源 如获取数据列表,查询数据
- post:通常用于创建或修改资源 如提交表单、上传文件等
二、HTTP2 相对于 HTTP1.X有什么优势和特点
1.多路复用:
- http2:允许在同一个连接中并行处理和响应多个请求
- http1:每个请求响应是串行的,同一时间只能处理一个请求
2.头部压缩:
- https使用了头部压缩技术,减少了头部数据的传输量,提高传输效率
3.服务器推送:
- http2服务器可以主动向客户端推送资源,无需等待客户端的请求,减少客户端请求次数,加快页面的加载速度
4.二进制分帧:
- http2:将数据分割成更小的帧,并采用二进制格式传输,提高了数据的解析效率和传输性能
- https:是文本格式,解析效率低
5.流量控制:
提供流量控制机制,允许客户端和服务器端对数据的发送和接收进行控制,避免发送数据过快造成拥堵,提高整个系统的稳定性
三、HTTPS 是怎么保证安全的,为什么比http安全
1.加密传输:
使用加密歇息对数据进行加密,在数据传输过程中,信息会被加密成密文。
2.身份认证机制:
要求服务器向客户端提供数字证书,确认服务器身份真实性,防止用户访问到假冒网站
3.数据完整性保护:
通过消息认证码等技术确保数据在传输过程中未被篡改。
四、请求状态码
五、post为什么会多发送一次option请求
是http的一种特性叫预检请求,主要发生在跨域请求中,针对于一些不安全或者自定义请求头的请求 目的是检查服务器是否允许来自不同源请求进行操作。
六、http的请求和响应报文分别是什么样的?
1.请求报文:请求行 请求头部 空行 请求正文组成
- 请求行:请求方法 URL HTTP版本号
- 请求头:有一系列键值对组成,包含了与请求相关的信息
- 空行:分割头部和正文
- 请求正文:包含需要发给服务器的信息,get一般没有正文
2.响应报文:响应行 响应头 响应正文
- 响应行:http版本号 响应码 响应码描述
- 响应头:包含了与响应相关的信息
- 响应正文:包含服务器返回给客户端的数据,一般为html内容、图片数据、JSON格式的响应结果等
七、http的keep-alive是干什么的?
- 能让客户端和服务器之间的连接保持一段时间不关闭,这样下次在请求的时候就不用重新建立连接了,能节省时间和资源,让网页加载更快。
- 具体实现:在http1.1协议里,默认就是开启keep-alive的,服务器响应请求时,会在http头里加上connection:keep-alive字段。