前端面试-----HTTP协议

HTTP协议的主要特点:

简单快速,灵活,无连接,无状态

HTTP报文的组成部分:

请求报文:请求行:请求方法  URL地址  协议名称或版本号

                 请求头:   键值对  服务端据此获取客户端的信息

                 空行:      分隔请求头和请求体

                 请求体:   通过请求体传值

响应报文: 状态行: 说明所请求的资源情况

                  响应头 : 描述服务器基本信息

                  空行 : 分隔响应头和响应体

                  响应体:服务端返回的数据

HTTP方法:

POST: 传输资源

GET: 获取资源

PUT:更新资源

DELETE:删除资源

HEAD:获得报文首部

POST和GET的区别:

GET在浏览器回退时是无害的,而POST会再次提交请求

GET产生的URL地址可以被收藏,而POST不可以

GET请求会被浏览器主动缓存,而POST不可以

GET请求只能进行url编码,而POST支持多种编码方式

GET请求参数会被完整保留在浏览器的历史记录里,而POST中的参数不会被保留

GET请求在URL中传送的参数是有长度限制的,而POST没有限制

对参数的数据类型,GET值接收ASCII字符,而POST没有限制

对参数的数据类型,GET只接收ASCII字符,而POST没有限制

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

GET参数通过URL传递,POST放在Request body中

HTTP状态码:

1xx:指示信息-表示请求已接收,继续处理

2xx:成功-表示请求已被成功接收

3xx:重定向-要完成请求必须进行更进一步的操作

4xx:客户端错误-请求有语法错误或请求无法实现

5xx:服务器错误-服务器未能实现合法的请求

什么是持久连接:(1.1版本才支持)

HTTP协议采用请求-应答模式,当使用普通模式,即非Keep-Alive模式时,每个请求、应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议)

当使用Keep-Alive模式,(又称持久连接,连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后续请求时,Keep-Alive功能避免了建立或者重新建立连接

什么是管线化:

管线化机制通过持久连接完成,仅HTTP/1.1支持此技术

只有GET和HEAD请求可以进行管线化,而POST则有所限制

初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1版本的协议

HTTP/1.1要求服务器端支持管线化,但并不要求服务器端也对响应进行管线化处理,只是要求对于管线化的请求不失败即可

由于上面提到的服务器端问题,开启管线化很可能并不会带来大幅度的性能提升,而且很多服务器端和代理程序对管线化的支持并不太好,因此现代浏览器默认并为开启管线化支持


你可能感兴趣的:(前端面试-----HTTP协议)