HTTP协议类

本文是学习慕课网上课程前端跳槽面试必备技巧的学习笔记,便于之后复习。

从以下几个方面介绍HTTP协议:

  1. HTTP协议的主要特点
  2. HTTP报文的组成部分
  3. HTTP方法
  4. HTTP状态码
  5. POST和GET的区别
  6. 什么是持久连接
  7. 什么是管线化

1.HTTP协议的主要特点

1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

2)灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。

3)☆无连接:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

4)☆无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

客户端向服务端请求服务时,http协议建立连接,请求完成后连接就会断开。下一个客户端请求服务时,服务端无法区分与前一个客户端是否是同一个客户端。即HTTP协议无法区分两次连接者身份就是无状态。如果登录一个网站,下次登录时网站会记住你,是保持 HTTP 连接状态的技术,一个是 Cookie,而另一个则是 Session。

2.HTTP报文的组成部分

HTTP有两种类型的报文:请求报文和响应报文。

请求行包含3个字段:方法(请求类型)、URL和HTTP版本,以空格分隔。

状态行共有3个字段:HTTP协议版本、状态码和短语(定义了请求的状态),以空格分隔。

3.HTTP方法(校招常问)

①.GET   请求服务器的文档(获取资源)

②.POST 从客户端向服务器发送一些信息(传输资源)

③.PUT    从服务器向客户端发送文档

④.DELETE 删除Web页

⑤.HEAD 请求关于文档的信息,但不是这个文档本身(获取报文首部)

⑥.TRACE 把到达的请求回送

⑦.CONNECT 保留

⑧.OPTIONs 询问关于可用的选项

4.POST和GET的区别

Get在浏览器回退时是无害的,而POST会再次提交请求。 // get在回退时是不会重复提交

Get请求会被浏览器主动缓存,而POST不会,但是可以手动设置

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

Get请求在URL中传送的参数有长度限制(基本是2kb不同浏览器限制不同),POST没有限制

GET比POST更不安全,因为参数直接暴露在URL中,不要用于传输敏感信息

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

Get的url可以被浏览器收藏,而POST不可以。

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

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

5.HTTP状态码(校招常问)

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

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

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

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

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

常见的状态码如下

//提供信息的

100  Continue 请求的开始部分已经收到,客户可以继续它的请求

101  Switching       服务器同意切换协议

//成功

200  OK  客户端请求成功

201  Created   新的URL被创建

202  Accepted 请求被接受,但还没有马上起作用

204  No content      主体中没有内容

206  Partial Content 客户发送一个带有Range头的GET请求,服务器完成请求

//重定向

301  Moved Permanently       所请求的URL已转向新的url

302  Moved temporarily        所请求的URL已临时转向新的url

304  Not modified  文档还没有修改,客户端有缓存的文档并发出请求,服务器高速客户端文档没有修改,原缓存文档可以继续用

//客户端差错

400  Bad request     在请求中有语法差错,不能被服务器所理解

401  Unauthorized  请求缺少适当的授权

403  Forbidden       服务被拒绝,被请求页面的资源禁止访问

404  Not found       文档未找到

405  Method not allowed       这个方法不被这个URL所支持

406  Not acceptable 所请求的格式不可接受

//服务器差错

500  Internal server error       在服务器端有差错,如崩溃

501  Not implemented    所请求的动作不能完成

503  Service unavailable 服务暂时不可用

6.什么是持久连接?

HTTP1.1支持持久连接 1.0不支持

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

当使用Keep-Alive模式(持久连接)时,Keep-Alive功能使客户端到服务端的连接持久有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。HTTP1.1中的keep-alive,将多个http请求合并为1个

7.什么是管线化?

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

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

管线化后,连接上的消息变成了这样

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

非管线化的持久连接是来一个请求就响应一个而管线化是,把请求打包发过去,一起响应。

管线化特点:1、2、3点记住

HTTP协议类_第1张图片

 

 

你可能感兴趣的:(HTTP协议类)