HTTP有哪些方法?
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT
GET和POST有什么区别?
数据传输方式不同:GET请求通过URL传输数据,而POST的数据通过>
安全性不同:POST的数据因为在请求主体内,所以有一定的安全性保证,而GET的数据在URL中,通过历史记录,缓存很容易查到数据信息。
数据类型不同:GET只允许 ASCII 字符,而POST无限制
GET无害: 刷新、后退等浏览器操作GET请求是无害的,POST可能重复提交表单
特性不同:GET是安全(这里的安全是指只读特性,就是使用这个方法不会引起服务器状态变化)且幂等(幂等的概念是指同一个请求方法执行多次和仅执行一次的效果完全相同),而POST是非安全非幂等
http的请求报文是什么样的?
http的响应报文是什么样的?
聊一聊HTTP的状态码有哪些?
2XX 成功
200 OK,表示从客户端发来的请求在服务器端被正确处理 ✨
201 Created 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立
202 Accepted 请求已接受,但是还没执行,不保证完成请求
204 No content,表示请求成功,但响应报文不含实体的主体部分
206 Partial Content,进行范围请求 ✨
3XX 重定向
301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
302 found,临时性重定向,表示资源临时被分配了新的 URL ✨
303 see other,表示资源存在着另一个 URL,应使用 GET 方法丁香获取资源
304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
307 temporary redirect,临时重定向,和302含义相同
4XX 客户端错误
400 bad request,请求报文存在语法错误 ✨
401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息 ✨
403 forbidden,表示对请求资源的访问被服务器拒绝 ✨
404 not found,表示在服务器上没有找到请求的资源 ✨
408 Request timeout, 客户端请求超时
409 Confict, 请求的资源可能引起冲突
5XX 服务器错误
500 internal sever error,表示服务器端在执行请求时发生了错误 ✨
501 Not Implemented 请求超出服务器能力范围,例如服务器不支持当前请求所需要的某个功能,或者请求是服务器不支持的某个方法
503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
505 http version not supported 服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本
HTTP的keep-alive是干什么的?
在早期的HTTP/1.0中,每次http请求都要创建一个连接,而创建连接的过程需要消耗资源和时间,为了减少资源消耗,缩短响应时间,就需要重用连接。在后来的HTTP/1.0中以及HTTP/1.1中,引入了重用连接的机制,就是在http请求头中加入Connection: keep-alive来告诉对方这个请求响应完成后不要关闭,下一次咱们还用这个请求继续交流。协议规定HTTP/1.0如果想要保持长连接,需要在请求头中加上Connection: keep-alive。
keep-alive的优点:
较少的CPU和内存的使用(由于同时打开的连接的减少了)
允许请求和应答的HTTP管线化 降低拥塞控制 (TCP连接减少了)
减少了后续请求的延迟(无需再进行握手)
报告错误无需关闭TCP连
为什么有了HTTP为什么还要HTTPS?
https是安全版的http,因为http协议的数据都是明文进行传输的,所以对于一些敏感信息的传输就很不安全,HTTPS就是为了解决HTTP的不安全而生的
HTTP2相对于HTTP1.x有什么优势和特点?
二进制分帧
帧:HTTP/2 数据通信的最小单位消息:指 HTTP/2 中逻辑上的 HTTP 消息。例如请求和响应等,消息由一个或多个帧组成。
流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID
HTTP/2 采用二进制格式传输数据,而非 HTTP 1.x 的文本格式,二进制协议解析起来更高效
服务器推送
服务端可以在发送页面HTML时主动推送其它资源,而不用等到浏览器解析到相应位置,发起请求再响应。例如服务端可以主动把JS和CSS文件推送给客户端,而不需要客户端解析HTML时再发送这些请求。
服务端可以主动推送,客户端也有权利选择是否接收。如果服务端推送的资源已经被浏览器缓存过,浏览器可以通过发送RST_STREAM帧来拒收。主动推送也遵守同源策略,服务器不会随便推送第三方资源给客户端。
头部压缩
多路复用
拓展阅读:https://zhuanlan.zhihu.com/p/30166894