参考文章:https://blog.csdn.net/agzhchren/article/details/79173491

一、HTTP简介

是超文本传输协议(Hyper Text Transfer Protocol)的缩写,是从万维网服务器传输超文本到本地浏览器的传送协议。

  • 面向应用层。
  • 工作于客户端-服务器端架构。

二、HTTP的报文结构

  • 用于 HTTP 协议交互的信息被称为 HTTP 报文。
  • 请求端(客户端) 的 HTTP 报文叫做请求报文, 响应端(服务器端) 的叫做响应报文。
  • HTTP报文本身是由多行(用 CR+LF 作换行符) 数据构成的字符串文本。(其中CR是空格,LF是换行)。
  • HTTP 报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF) 来划分。 通常, 并不一定要有报文主体。
    HTTP协议细节
    HTTP协议细节
    实例:
    HTTP协议细节
  • 请求行 : 包含用于请求的方法, 请求 URI 和 HTTP 版本。
  • 状态行 : 包含表明响应结果的状态码, 原因短语和 HTTP 版本。
  • 首部字段 : 包含表示请求和响应的各种条件和属性的各类首部。一般有 4 种首部, 分别是: 通用首部、 请求首部、 响应首部和实体首部。
  • 其他 : 可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)。

返回结果的 HTTP 状态码:状态码负责表示客户端 HTTP 请求的返回结果、 标记服务器端的处理是否正常、 通知出现的错误等工作。
HTTP协议细节
状态码如 200 OK, 以 3 位数字和原因短语组成。数字中的第一位指定了响应类别, 后两位无分类。 响应类别有以下 5 种。

HTTP协议细节

1、 2XX 成功,表明请求被正常处理了。

  • 204 No Content : 该状态码代表服务器接收的请求已成功处理, 但在返回的响应报文中不含实体的主体部分。另外, 也不允许返回任何实体的主体。 比如,当从浏览器发出请求处理后, 返回 204 响应, 那么浏览器显示的页面不发生更新。
    HTTP协议细节
  • 206 Partial Content : 该状态码表示客户端进行了范围请求, 而服务器成功执行了这部分的 GET 请求。 响应报文中包含由 Content-Range 指定范围的实体内容。
    HTTP协议细节
    2、3XX 重定向,表明浏览器需要执行某些特殊的处理以正确处理请求。
  • 301 Moved Permanently : 永久性重定向。 该状态码表示请求的资源已被分配了新的 URI, 以后 应使用资源现在所指的URI。
  • 302 Found : 临时性重定向。 该状态码表示请求的资源已被分配了新的 URI, 希望用户(本次) 能使用新的 URI 访问。和 301 Moved Permanently 状态码相似, 但 302 状态码代表的资源不是被永久移动,只是临时性质的。
  • 303 See Other : 该状态码表示由于请求对应的资源存在着另一个 URI, 应使用 GET 方法定向获取请求的资源。
  • 当 301、 302、 303 响应状态码返回时, 几乎所有的浏览器都会把 POST 改成 GET, 并删除请求报文内的主体, 之后请求会自动再次发送。301、 302 标准是禁止将 POST 方法改变成 GET 方法的, 但实际使用时大家都会这么做。
  • 304 Not Modified : 该状态码表示客户端发送附带条件(附带条件的请求是指采用 GET方法的请求报文中包含 If-Match, If-ModifiedSince, If-None-Match, If-Range, If-Unmodified-Since 中任一首部。)的请求时, 服务器端允许请求访问资源, 但未满足条件的情况。
  • 307 Temporary Redirect : 临时重定向。 该状态码与 302 Found 有着相同的含义。 尽管 302 标准禁止 POST 变换成 GET, 但实际使用时大家并不遵守。307 会遵照浏览器标准, 不会从 POST 变成 GET。 但是, 对于处理响应时的行为, 每种浏览器有可能出现不同的情况。

3、4XX 客户端错误,表明客户端是发生错误的原因所在。

  • 400 Bad Request : 该状态码表示请求报文中存在语法错误。 当错误发生时, 需修改请求的内容后再次发送请求。

  • 401 Unauthorized : 该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证) 的认证信息。 另外若之前已进行过 1 次请求, 则表示用户认证失败。返回含有 401 的响应必须包含一个适用于被请求资源的 WWW-Authenticate 首部用以质询(challenge) 用户信息。 当浏览器初次接收到 401 响应, 会弹出认证用的对话窗口。
    HTTP协议细节

  • 403 Forbidden : 该状态码表明对请求资源的访问被服务器拒绝了。

  • 404 Not Found : 该状态码表明服务器上无法找到请求的资源。 除此之外, 也可以在服务器端拒绝请求且不想说明理由时使用。
    HTTP协议细节
    4、5XX 服务器错误 : 表明服务器本身发生错误。

  • 500 Internal Server Error : 该状态码表明服务器端在执行请求时发生了错误。 也有可能是 Web 应用存在的 bug 或某些临时的故障。

  • 03 Service Unavailable : 该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。

相关文章: