HTTP 状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。让我们通过本文的学习,好好了解一下状态码的工作机制。

1 状态码告知从服务器端返回的请求结果

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。
借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。

数字中的第一位指定了响应类别,后两位无分类


HTTP 状态码
这里写图片描述

只要遵守状态码类别的定义,即使改变 RFC2616 中定义的状态码,或服务器端自行创建状态码都没问题。

接下来,我们就介绍一下这些具有代表性的几个状态码。

2 2XX 成功

2XX 的响应结果表明请求被正常处理了。

2.1 200 OK

HTTP 状态码
这里写图片描述

表示从客户端发来的请求在服务器端被正常处理了。
在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。
比如

  • 使用 GET 方法时,对应请求资源的实体会作为响应返回;
  • 使用 HEAD 方法时,对应请求资源的实体首部不随报文主体作为响应返回(即在响应中只返回首部,不会返回实体的主体部
    分)。

3 3XX 重定向

3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

3.1 301 Moved Permanently

HTTP 状态码
这里写图片描述

永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。也就是说,如果已经把资源对应的 URI保存为书签了,这时应该按 Location 首部字段提示的 URI 重新保存。

像下方给出的请求 URI,当指定资源路径的最后忘记添加斜杠“/”,就会产生 301 状态码。

http://example.com/sample

3.2 302 Found

HTTP 状态码
这里写图片描述

临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。

和 301 Moved Permanently 状态码相似,但 302 状态码代表的资源不是被永久移动,只是临时性质的。
换句话说,已移动的资源对应的URI 将来还有可能发生改变。比如,用户把 URI 保存成书签,但不会像 301 状态码出现时那样去更新书签,而是仍旧保留返回 302 状态码的页面对应的 URI

4 4XX 客户端错误

4XX 的响应结果表明客户端是发生错误的原因所在。

4.1 400 Bad Request

HTTP 状态码
这里写图片描述

该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 200 OK 一样对待该状态码。

4.2 404 Not Found

该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。

5 5XX 服务器错误

5XX 的响应结果表明服务器本身发生错误。

5.1 500 Internal Server Error

HTTP 状态码
这里写图片描述

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

上一篇:生成对抗网络(GANs)最新家谱:为你揭秘GANs的前世今生


下一篇:【Visual C++】Windows GDI贴图闪烁解决方法