小结HTTP状态码

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:作为一个web开发工程师,我们平时都会和诸如HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指浏览器客户端)的这些状态码相当于浏览器和服务器之间的对话信息。它们相互沟通两者之间的事情是正常运行了还是运行失败了或者发生了一些其他的事情(如Continue)。了解状态码有助于你快速的诊断错误,减少网站的停机时间等等。
小结HTTP状态码

作为一个web开发工程师,我们平时都会和诸如 200, 304, 404, 501 等状态码打交道,那么它们是什么意思呢?今天,我们来聊聊~

什么是HTTP状态码

HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指浏览器客户端)的 3位数字代码

这些状态码相当于浏览器和服务器之间的对话信息。它们相互沟通两者之间的事情是正常运行了还是运行失败了或者发生了一些其他的事情(如Continue)。了解状态码有助于你快速的诊断错误,减少网站的停机时间等等。

状态码分类

状态码共分为五类,以1-5数字开头进行标识,如下:

  • 1xxs - 信息性 :服务器正在处理请求。
  • 2xxs - 成功信息 :请求已经完成,服务器向浏览器提供了预期的响应。
  • 3xxs –重定向 :你的请求被重定向到了其他地方。服务器收到了请求,但是有某种重定向。
  • 4xxs – 客户端错误 :客户端发生错误,导致服务器无法处理请求。
  • 5xxs – 服务端错误 :客户端发出了有效的请求,但是服务器未能正确处理请求。

备注:3xxs类中的304是个奇葩,其不属于重定向信息提示,这个后面会讲到

HTTP状态码大体的内容已经了解了,但是在具体的工作中,要用到具体的状态码,我们下面来展开说明下各自的一些状态码和工作中常用到的那些状态码:cat:

1xxs状态码

  • 100 Continue :表明目前为止,所有的请求内容都是可行的,客户端应该继续请求,如果完成,则忽略它。
  • 101 Switching Protocol :该状态码是响应客户端 Upgrade 标头发送的,并且指示服务器也正在切换协议。
  • 103 Early Hints :主要用于与 Link 链接头一起使用,以允许用户代理在服务器仍在准备响应时开始预加载资源。

备注:在web开发的工作中,我们都会使用封装好的库进行接口请求,而且浏览器的控制台网络中也不会出现这类状态码的提示(我没看到过:cry:),所以这一大类基本不会接触到,了解一下即可。

2xxs状态码

  • 200 OK :请求成功。成功的含义取决于HTTP方法:
    GET
    HEAD
    POST
    TRACE
    

说到了HTTP的方法,可以戳HTTP请求方法这个解析教程来了解一下。

  • 201 Created :请求已经成功,并因此创建了一个新的资源。这通常是在 PUTPOST 请求之后发送的响应。
  • 202 Accepted :请求已经接收到,但是没有响应,没有结果。意味着不会有一个异步的响应去表明当前请求的结果,预期另外的进程和服务去处理请求,或者批处理。
  • 204 No Content :服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息。遇到 复杂请求 时候,浏览器会发送一个 OPTION 方法进行预处理返回响应。

关于复杂请求和简单请求,可以参考这篇文章CORS非简单请求。

  • 205 Reset Content :服务器已经成功处理了请求,但是没有返回任何内容。与204响应不同,返回此状态码的响应要求请求者重置文档视图。

备注:使用的最多的2xxs状态码是200和204,在遇到204状态码的时候,要注意一下自己发的请求是不是复杂请求。如果是复杂请求,那么在得到204返回时,浏览器有没有接受了这个请求的返回,如果没有,要叫后端搞下相关配置了。

3xxs状态码

上文已经提到过,这一大类是提示 重定向 ,可是有一个奇葩--304,它并不是表示重定向的信息提示,而是表示 资源未被更改 。至于为什么会被放在这个分类里面,真不知道~(看官知道的话补充下啦):clap:

  • 301 Moved Permanently :被请求的资源已 永久 移动到新位置,并且将来任何对此资源的引用都应该使用响应返回的若干个URI之一。
  • 302 Found(Previously "Moved temporarily") :请求的资源现在 临时 从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在 Cache-ControlExpires 中进行了指定的情况下,这个响应才是可缓存的。
  • 303 See Other :对当前的请求的响应可以在另一个URI上被找到,而且客户端应该采用 GET 的方式访问那个链接。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。
  • 304 Not Modified :如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。请求的时候一般结合 If-Modified-Since 头部使用。
  • 307 Temporary Redirect :307的意义如上302。与历史上302不同的是 在重新发出原始请求时不允许更改请求方法 。比如,使用POST请求始终就该用POST请求。

备注:307和303已经替代了历史上的302状态码,现在看到的临时重定向的状态码是307。详细内容可到维基百科上查看。


以上所述就是小编给大家介绍的《小结HTTP状态码》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

国际游戏设计全教程

国际游戏设计全教程

[美]迈克尔·萨蒙德 / 张然、赵嫣 / 中国青年出版社 / 2017-2 / 108.00元

你想成为一名电子游戏设计师吗?想知道《肯塔基0号路》《到家》《枪口》等独立游戏的制作理念及过程吗?想了解《戈莫布偶大冒险》《辐射3》《战争机器》中关卡设计的奥秘吗?本书用通俗易懂的文字介绍了在游戏开发与策划过程中,需要掌握的游戏设计原理和制作的基础知识,可以作为读者从“构思一个电子游戏”到“真正完成一个电子游戏”的完备指南。 本书以系统的游戏设计流程结合大量优秀的游戏设计案例进行讲解,让读者......一起来看看 《国际游戏设计全教程》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换