HTTP协议类知识记录

1. HTTP协议的主要特点

特点主要分为四个:简单快速、灵活、无连接、无状态。

  • 简单快速:统一资源服,资源地址固定,请求资源只需要传送对应路径和方法。
  • 灵活:HTTP允许传输任意类型的数据对象。同一http协议可以完成不同数据类型的传输。
  • 无连接:每次处理完请求之后,链接会断开,不会持续处于连接状态。
  • 无状态:无状态指协议对于事务处理没有记忆能力,通俗讲就是每次请求处理完断开后,不会留下记录信息,当客户端再次请求时,服务端也不能识别是否与上一次请求为同一客户端。

2. HTTP报文的组成部分

报文分为:请求报文、响应报文。

请求报文包括:

  • 请求行:包括请求方法、页面地址、协议版本。
  • 请求头:由key/value 组成,告诉服务端需要的指定资源类型。
  • 空行:表示请求头结束,下边为请求体内容。
  • 请求体:包括请求的一些数据。

响应报文:响应行、响应头、空行、响应体,与请求报文格式相差不多。

3. HTTP方法

GET:请求资源;
POST:传输资源;
HEAD:获取报文首部数据;
PUT:更新资源;(应用不多)
DELETE:删除资源;(应用更少)
PATCH:对已知资源进行局部更新

4. POST和GET的区别

1、GET 在浏览器回退时是无害的,而POST会再次提交请求。
2、GET 请求会被浏览器主动缓存,POST不会,除非手动设置。
3、GET 请求参数会被完整保留在浏览器历史记录中,POST不会保存。
4、GET 请求在URL中传递的参数是有长度限制的,POST不会限制。
5、GET 参数通过URL传递,POST 放在 Reques Body 中。
6、GET 产生的URL 地址可以收藏,POST 不可以。
7、GET 请求只能进行 url 编码,而POST 支持多种编码方式。
8、对参数的数据类型,GET只接受ASCII 字符,POST没有限制。
9、GET比POST更不安全,GET的参数都暴露在URL上,不能用来传递敏感信息。

5. HTTP状态码

状态码表示服务端返回的响应状态码。
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
分类 分类描述
1** : 信息,服务器收到请求,需要请求者继续执行操作
2** : 成功,操作被成功接收并处理
3** : 重定向,需要进一步的操作以完成请求
4** :客户端错误,请求包含语法错误或无法完成请求
5** :服务器错误,服务器在处理请求的过程中发生了错误

常见的状态码主要有:
200:请求成功。一般用于GET与POST请求
206:部分内容。服务器成功处理了部分GET请求
301:永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
304:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
400:客户端请求的语法错误,服务器无法理解
401:请求要求用户的身份认证
403:服务器理解请求客户端的请求,但是拒绝执行此请求
404:服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置”您所请求的资源无法找到”的个性页面
500:服务器内部错误,无法完成请求
503:由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

6. 什么是持久连接?管线化?

持久连接
HTTP协议采用”请求-应答“模式,当使用普通模式,即非持久连接(Keep-Alive)模式时,每个请求/应答客户端和服务端都要重新建立连接,完成之后断开。(HTTP为无连接协议)

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

管线化

在使用持久连接的情况下,某个连接上的消息传递类似于这样:

请求1->响应1->请求2->响应2->请求3->响应3

管线化就是将请求和响应都进行打包,即:

请求1->请求2->请求3->响应1->响应2->响应3

管线化特点:

  • 管线化机制通过持久连接完成,仅HTTP1.1版本支持。
  • 只有GET 和 HEAD 请求可以进行管线化,POST有限制。
  • 初次创建连接时不应启动管线机制,因为服务器不一定支持HTTP1.1版本的协议
  • 管线化不会影响到响应的顺序。
  • HTTP1.1要求服务端支持管线化,但并不要求服务端也对响应进行管线化处理,只是要求对于管线化的请求不是白即可。
  • 服务端开启管线化可能并不会带来大幅度的性能提升,而且许多服务端和代理程序对管线化的支持并没有达到相应层次,因此现代浏览器默认并未开启管线化支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值