美文网首页js css html
彻底搞懂 HTTP 报文、报文信息以及 HTTP 状态码

彻底搞懂 HTTP 报文、报文信息以及 HTTP 状态码

作者: Yandhi233 | 来源:发表于2022-01-08 22:31 被阅读0次

一、HTTP 报文

用于HTTP协议交互的信息被称为HTTP报文,

HTTP 报文分为请求报文响应报文

请求报文:客户端发送请求时的 HTTP 请求报文;
响应报文:服务器响应客户端请求时发送的响应报文

二、HTTP 报文信息

HTTP 报文大致可分为报文首部报文主体两块,其中报文主体不是必须要有的;

报文首部:服务器或者客户端需要处理的请求或响应的属性和内容;
报文主体:请求或者响应时需要发送的数据

请求报文和响应报文的首部内容由以下数据组成

  • 请求行:包含用于请求的方法,请求URI和HTTP版本。
  • 状态行:包含表明响应结果的状态码,原因短语和HTTP版本。
  • 首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。
  • 其他:可能包含HTTP的RFC里未定义的首部(Cookie等)。

三、HTTP 状态码

HTTP 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。

借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。


响应的状态码可描述请求的处理结果

状态码的类别

数字中的第一位指定了响应类别,后两位无分类。响应类别有以下5种:


状态码分类
下面主要介绍一些常用的 HTTP 状态码:
  • 状态码 200 表示从客户端发来的请求在服务器端被正常处理了;

    在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。比如,
    使用GET方法时,对应请求资源的实体会作为响应返回;
    使用HEAD方法时,在响应中只返回首部,不会返回实体的主体部分;

  • 状态码 202 表示已经接受请求但未处理完成;
  • 状态码 204 表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分;

    也不允许返回任何实体的主体。比如,当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新

  • 状态码 206 表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。
  • 状态码 300 表示请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端;
  • 状态码 301 表示请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替;

    当指定资源路径的最后忘记添加斜杠“/”,就会产生301状态码。
    http://baidu.com/search

  • 状态码 302 表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问;

    和 301 状态码相似,但 302 状态码代表的资源不是被永久移动,只是临时性质的。
    http://baidu.com/search/

  • 状态码 303 表示由于请求对应的资源存在着另一个URI,应使用 GET 方法定向获取请求的资源;

    303 状态码和 302 状态码有着相同的功能,但 303 状态码明确表示客户端应当采用 GET 方法获取资源,这点与302状态码有区别

  • 状态码 304 表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回 304 Not Modified;

    304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。

  • 状态码 400 表示客户端请求的语法错误,服务器无法理解;
  • 状态码 401 表示请求要求需要有通过 HTTP 认证的认证信息,如果之前已进行过1次请求,则表示用户认证失败;
  • 状态码 403 表示服务器理解请求客户端的请求,但是拒绝执行此请求;

    服务器端没有必要给出拒绝的详细理由,但如果想作说明的话,可以在实体的主体部分对原因进行描述,这样就能让用户看到了

  • 状态码 404 NotFound表示服务器无法根据客户端的请求找到相应的资源;
  • 状态码 408 表示服务器等待客户端发送的请求时间过长,超时;
  • 状态码 500 表示服务器执行请求时内部发生错误,无法完成该请求;
  • 状态码 503 表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

状态码和状况的不一致不少返回的状态码响应是错误的,但是用户可能察觉不到这点。比如Web应用程序内部发生错误(此时应该返回状态码 500),状态码依然返回200 OK,这种情况也经常遇到。

-- 以上主要图文来源《图解 HTTP》

相关文章

  • 彻底搞懂 HTTP 报文、报文信息以及 HTTP 状态码

    一、HTTP 报文 用于HTTP协议交互的信息被称为HTTP报文, HTTP 报文分为请求报文和响应报文; 请求报...

  • http-报文首部

      上次谈了谈http报文的状态码,这一次来说说报文的首部。我们都知道通过http协议传输的信息就是HTTP报文。...

  • Http报文

    http请求报文:方法、URI、HTTP版本、HTTP首部字段等构成。http响应报文:HTTP版本、状态码(数字...

  • HTTP报文、HTTP状态码

    HTTP报文简介 HTTP报文构成 报文首部 + 空行(CR+LF)+ 报文主体 编码提升传输速率: 压缩传输的内...

  • HTTP报文

    HTTP报文 -- 用于HTTP协议交互的信息 报文结构:报文首部和报文主体 报文首部:状态/请求行:请求行:用于...

  • HTTP——首部

    HTTP请求报文由请求方法、URI、HTTP版本、HTTP首部字段等构成。HTTP响应报文由HTTP版本、状态码(...

  • HTTP请求响应报文&&相关状态码&&a

    HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结HTTP请求报文: 一个HTTP请求报文由四个...

  • HTTP协议基础# Chapter3 HTTP报文

    Chapter3 HTTP报文 1 HTTP 报文 HTTP报文:::用于HTTP协议交互的信息HTTP报文= 报...

  • HTTP报文

    报文 请求报文 响应报文 备注: HTTP常用方法 GET方法与POST方法的区别 状态码分类状态码分类.png ...

  • HTTP协议 报文以及状态码

    请求报文和响应报文 状态码类别 几种状态码 200 客户端发送的请求在服务器被正常处理了 204 请求处理成功但是...

网友评论

    本文标题:彻底搞懂 HTTP 报文、报文信息以及 HTTP 状态码

    本文链接:https://www.haomeiwen.com/subject/pifycrtx.html