(自用面试题)HTTP常见的响应状态码有哪些?

162 阅读5分钟

HTTP响应状态码/HTTP Status Code的作用是服务器告诉客户端当前请求响应的状态,通过状态码就能判断和分析服务器的运行状态。它由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字用来对状态码进行细分。

1xx类状态码

属于提示信息,表示目前是协议处理的中间状态,还需要后续操作,即信息状态码。实际开发很少遇到。

  • 100:客户端应该继续发送请求,这是临时响应。这个临时响应是用来通知客户端它的部分请求已经被服务器接收且仍未被拒绝,客户端应当继续发送请求的剩余部分;或者如果请求已经完成,则忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。
  • 101:服务器根据客户端的请求切换协议,主要用于websocket或http2升级。

2xx类状态码

表示服务器成功处理了客户端的请求,即成功状态码。

  • 200/OK(成功):请求成功,一般用于GET请求或者POST请求。
  • 201/Created(已创建):请求成功并且服务器创建了新的资源,一般用于POST请求或者PUT请求。
  • 202(已创建):服务器已经接收请求,但尚未处理。
  • 203(非授权信息):服务器已成功处理请求,但返回的信息可能来自另一来源。
  • 204/No Content(无内容):服务器成功处理请求,但没有返回任何内容。
  • 205(重置内容):服务器成功处理请求,但没有返回任何内容。
  • 206/Partial Content(部分内容):服务器成功处理了部分请求。一般用来做断点续传,或者是视频文件等大文件的加载。

3xx类状态码

表示客户端请求发送的资源发生了变动,需要客户端用新的URL重新发送请求获取资源,即重定向状态码。

  • 300(多种选择):针对请求,服务器可执行多种操作,服务器可根据请求者选择一项操作或者提供操作列表供请求者选择。
  • 301/Move Permanently(永久重定向):请求的资源已永久移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL,今后任何新的请求都应该使用新的URL代替。
  • 302/Found(临时重定向):请求的资源还在,但暂时需要用另一个URL来访问。
  • 303(查看其他位置):请求者对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。
  • 304/Not Modified(缓存重定向):服务器返回此状态码时不会返回任何资源,重定向已存在的缓冲文件。实质上客户端不会去找服务器要资源,而是去客户端缓存中直接取出资源使用。
  • 305(使用代理):请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
  • 307(临时重定向):和302类似,但是期望客户端保持请求方法不变向新的URL发出请求。

4xx类状态码

表示客户端发送的报文有误,服务器无法处理,即客户端错误状态码。

  • 400/Bad Request(错误请求):语义有误,当前请求服务器无法理解;或者表示请求参数有误。
  • 401/Unauthorized(未授权):表示当前请求要求身份验证,对于需要登录的网页,服务器可能返回此响应状态码。
  • 403/Forbidden(禁止):服务器拒绝执行请求。
  • 404/Not Found(未找到):请求的资源在服务器上找不到。
  • 405(方法禁用):禁用请求中指定的方法。
  • 406(不接受):无法使用请求的内容特性响应请求的网页。
  • 407(需要代理授权):此状态代码与401类似,但指定请求者应当授权使用代理。
  • 408/Request Timeout(请求超时):服务器等候客户端发送的请求超时。

5xx类状态码

表示客户端请求报文正确,但是服务器处理时内部发生错误,即服务器错误状态码。

  • 500/Internal Server Error(服务器内部错误):服务器内部错误,无法完成请求。
  • 501/Not Implemented(尚未实施):服务器不支持该请求方法,无法完成请求。只有GET请求方法和HEAD请求方法是要求每个服务器必须支持的,其他请求方法在不支持的服务器上会返回501。
  • 502/Bad Gateway(错误网关):服务器作为网关或代理返回的响应状态码,表示服务器自身工作正常,访问后端服务器时发生了错误。
  • 503/Service Unavailable(服务不可用):表示服务器由于超载或者停机维护,目前无法处理客户端的请求。
  • 504(网关超时):服务器作为网关或代理,但是没有及时从上游服务器收到请求。
  • 505(HTTP版本不受支持):服务器不支持请求中所用的HTTP协议版本。