前端面试--一面05_HTTP协议

一、HTTP概念

  • 超文本协议传输

二、HTTP工作流程

  • 首先客户机与服务器需要建立连接。只要打开某个超链接,HTTP的工作开始。
  • 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
  • 服务器接到请求后,给与相应的相应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  • 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开链接

三、HTTP协议的主要特点

其特点主要有四个:无连接、无状态、简单快速、灵活

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

四、HTTP报文的组成部分

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

  • 请求报文包括:
    • 请求行:主要包括请求方法、页面地址、协议版本。
    • 请求头:由key/value 组成,告诉服务端需要的资源类型。
    • 空行:表示请求头结束,下边的都是请求体内容。
    • 请求体:包括请求的一些数据。
  • 响应报文:
    • 响应行、响应头、空行、响应体与请求报文相差不多。

五、HTTP方法

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

六、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上,不能用来传递敏感信息。

以上的区别,选择性的记几条,前五条较重要。

七、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头信息中

    更多更详细的请参考菜鸟教程HTTP教程http状态码

八、什么是持久连接?

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要求服务端支持管线化,但并不要求服务端也对响应进行管线化处理,只是要求对于管线化的请求不是白即可。
  • 由于上面提到的服务端问题,开启管线化可能并不会带来大幅度的性能提升,而且很多服务端和代理程序对管线化的支持并不好,因此现代浏览器默认并未开启管线化支持。
  • 对于管线化,能简单回答出是什么和有什么特点即可。

参考博客 前端面试题之HTTP协议类
项目来源:慕课网
如有建议和疑问可联系
QQ:1017386624
邮箱:1017386624@qq.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值