http

284 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天,点击查看活动详情

http协议的特征

http是半双工通讯协议。它的特点如下:

  • 简单快捷:客户向服务器请求服务时,只需传送请求方法和路径,由于http协议简单,使得http服务器的程序规模小,因而通信速度十分的快
  • 灵活:http允许传输任意类型的数据,正在传输的类型有content-type加以标记
  • 无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式节省传输时间
  • 无状态:http协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则他必须重传。
  • 支持B/S以及C/S模式:http使用统一资源标识符(URL)来传输数据和建立连接。

http的工作流程

一次http操作称为一个事务,其工作过程分为四步:

  1. 首先客户机与服务器需要建立连接(三次握手)只要单击某个连接
  2. 建立连接后,客户机发送一个请求给服务器
  3. 服务器接到请求后给予相应的响应信息,其格式为一个状态行
  4. 客户端接收到服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接(四次挥手)

http请求的构成

  1. http请求的方法:get/post
  2. http请求的URL地址
  3. http请求头,包含客户端浏览器,环境信息等
  4. http请求正文(请求体),请求正文一般是发送给服务器的数据(表单信息等)

http状态码

  1. 信息响应(100-199)
  • 100:这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。
  • 101:该代码是响应客户端的Upgrade(en-US)请求头发送的,指明服务器即将切换的协议。
  • 102:此代码表示服务器已收到并正在处理该请求,但当前没有响应可用。
  • 103:此状态代码主要用于与 [Link]) 链接头一起使用,以允许用户代理在服务器准备响应阶段时开始预加载 [preloading] 资源。
  1. 成功响应
    • [200 OK]请求成功。成功的含义取决于 HTTP 方法:
      • GET: 资源已被提取并在消息正文中传输。
      • HEAD: 实体标头位于消息正文中。
      • PUT or POST: 描述动作结果的资源在消息体中传输。
      • TRACE: 消息正文包含服务器收到的请求消息。
    • [201 Created]:请求已成功,并因此创建了一个新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应。
    • [202 Accepted] 请求已经接收到,但还未响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。
  2. 重定向消息
    • 301:请求资源的URl已永久更改。在响应中给出了新的URL。
  3. 客户端错误响应
    • 400:由于被认为是客户端错误(例如,错误的请求语法、无效的请求消息帧或欺骗性的请求路由),服务器无法或不会处理请求。
    • 404:服务器找不到请求的资源。在浏览器中,这意味着无法识别 URL。在 API 中,这也可能意味着端点有效,但资源本身不存在。服务器也可以发送此响应,而不是 403 Forbidden,以向未经授权的客户端隐藏资源的存在。这个响应代码可能是最广为人知的,因为它经常出现在网络上。
  4. 服务器端错误响应
    • 500:服务器遇到了不知道如何处理的情况。
    • 501:此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应
    • 502:此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。
    • 503服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。请注意,与此响应一起,应发送解释问题的用户友好页面。这个响应应该用于临时条件和如果可能的话,HTTP 标头 Retry-After 字段应该包含恢复服务之前的估计时间。网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。
    • 504:当服务器充当网关且无法及时获得响应时,会给出此错误响应。
    • 505:服务器不支持请求中使用的 HTTP 版本。
    • 506:服务器存在内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当终点。
    • 507:无法在资源上执行该方法,因为服务器无法存储成功完成请求所需的表示。
    • 508:服务器在处理请求时检测到无限循环
    • 510:服务器需要对请求进行进一步扩展才能完成请求。
    • 511:指示客户端需要进行身份验证才能获得网络访问权限