响应状态码该怎么用?( 三 )

  • 431 Request Header Fields Too Large:请求头某个字段或总体太大;
  • 5××5××类状态码表示客户端请求报文正确,但服务器在处理时内部发生了错误,无法返回应有的响应数据,是服务器端的“错误码” 。
    “500 Internal Server Error”与 400 类似,也是一个通用的错误码,服务器究竟发生了什么错误我们是不知道的 。不过对于服务器来说这应该算是好事,通常不应该把服务器内部的详细信息,例如出错的函数调用栈告诉外界 。虽然不利于调试,但能够防止黑客的窥探或者分析 。
    “501 Not Implemented”表示客户端请求的功能还不支持,这个错误码比 500 要“温和”一些,和“即将开业,敬请期待”的意思差不多,不过具体什么时候“开业”就不好说了 。
    “502 Bad Gateway”通常是服务器作为网关或者代理时返回的错误码,表示服务器自身工作正常,访问后端服务器时发生了错误,但具体的错误原因也是不知道的 。
    “503 Service Unavailable”表示服务器当前很忙,暂时无法响应服务,我们上网时有时候遇到的“网络服务正忙,请稍后重试”的提示信息就是状态码 503 。
    503 是一个“临时”的状态,很可能过几秒钟后服务器就不那么忙了,可以继续提供服务,所以 503 响应报文里通常还会有一个“Retry-After”字段,指示客户端可以在多久以后再次尝试发送请求 。
    小结
    1. 状态码在响应报文里表示了服务器对请求的处理结果;
    2. 状态码后的原因短语是简单的文字描述,可以自定义;
    3. 状态码是十进制的三位数,分为五类,从 100 到 599;
    4. 2××类状态码表示成功,常用的有 200、204、206;
    5. 3××类状态码表示重定向,常用的有 301、302、304;
    6. 4××类状态码表示客户端错误,常用的有 400、403、404;
    7. 5××类状态码表示服务器错误,常用的有 500、501、502、503 。
    课下作业
    1. 你在开发 HTTP 客户端,收到了一个非标准的状态码,比如 4××、5××,应当如何应对呢?
    2. 你在开发 HTTP 服务器,处理请求时发现报文里缺了一个必需的 query 参数,应该如何告知客户端错误原因呢?
    欢迎你把自己的答案写在留言区,与我和其他同学一起讨论 。如果你觉得有所收获,欢迎你把文章分享给你的朋友 。

    【响应状态码该怎么用?】


    推荐阅读