转载

http协议状态码


1、类别

HTTP协议状态码一共有5种类别,分别是1xx,2xx,3xx,4xx,5xx 用2位数字来表示不同的错误:

  • 1XX类状态码信息表示:临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1XX响应(请求收到,继续处理)
  • 2XX类状态码信息表示:服务器成功的接收了客户端请求(操作成功收到,分析、接受)
  • 3XX类状态码信息表示:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同页面,或者通过代理服务器重复该请求(完成此请求必须进一步处理)
  • 4XX类状态码信息表示:发生错误,客户端似乎有问题。例如:客户端请求不存在的页面,客户端为提供有效的身份验证信息(请求包含一个错误语法或不能完成)
  • 5XX类状态码信息表示:服务器遇到错误而不能完成该请求(服务器执行一个完全有效请求失败)

2、中文

100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
400——错误请求,如语法错误
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
500——服务器产生内部错误
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器过载或暂停维修
504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505——服务器不支持或拒绝支请求头中指定的HTTP版本
1XX:信息性状态码
2XX:成功状态码
3XX:重定向状态码
4XX:客户端错误状态码
5XX:服务器端错误状态码

3、英文

"100":Continue
"101":witchingProtocols
"200":OK
"201":Created
"202":Accepted
"203":Non-AuthoritativeInformation
"204":NoContent
"205":ResetContent
"206":PartialContent
"300":MultipleChoices
"301":MovedPermanently
"302":Found
"303":SeeOther
"304":NotModified
"305":UseProxy
"307":TemporaryRedirect
"400":BadRequest
"401":Unauthorized
"402":PaymentRequired
"403":Forbidden
"404":NotFound
"405":MethodNotAllowed
"406":NotAcceptable
"407":ProxyAuthenticationRequired
"408":RequestTime-out
"409":Conflict
"410":Gone
"411":LengthRequired
"412":PreconditionFailed
"413":RequestEntityTooLarge
"414":Request-URITooLarge
"415":UnsupportedMediaType
"416":Requestedrangenotsatisfiable
"417":ExpectationFailed
"500":InternalServerError
"501":NotImplemente
"502":BadGateway
"503":ServiceUnavailable
"504":GatewayTime-out
"505":HTTPVersionnotsupported

4、如何处理不同类型的状态码

根据不同的状态码类型,可以采取不同的处理方式:

2xx状态码:

主要是根据具体的业务需求进行相应的业务逻辑处理。例如,在处理POST请求时,如果返回200 OK状态码,则表示请求成功,可以根据业务需求更新数据库或执行其他相关操作。如果返回204 No Content状态码,则表示服务器成功处理了请求,但客户端不需要进一步操作,此时可以直接结束请求处理或返回空数据给客户端。需要注意的是,虽然2xx状态码表示请求已成功被处理,但在实际处理过程中可能仍然会出现一些错误或异常情况。

因此,在实际应用中,还需要结合具体的业务需求和错误处理机制,对可能出现的异常情况进行捕获和处理,以确保系统的稳定性和可用性。同时,也需要对返回的状态码进行合理的判断和处理,以提供更好的用户体验和系统性能。

4xx状态码:

400 Bad Request:该状态码表示请求存在语法错误或无法被服务器理解。常见的原因包括请求参数格式错误、请求头信息不合法等。处理方式包括仔细检查请求参数和头部信息,确保格式正确并提供清晰的错误消息指导用户提供正确的参数。

401 Unauthorized:该状态码表示请求需要身份验证,但未提供有效的凭证。处理方式包括确保正确处理和验证用户凭证,提供明确的错误消息指导用户提供有效的凭证,并使用适当的身份验证机制,如基本认证或令牌认证。

403 Forbidden:该状态码表示服务器理解请求,但拒绝执行。常见的原因包括请求的权限和访问控制设置不正确、服务器配置错误等。处理方式包括检查请求的权限和访问控制设置,提供明确的错误消息指导用户了解请求被拒绝的原因,并确保服务器配置正确以避免误报403错误。

404 Not Found:该状态码表示请求的资源不存在。常见的原因包括请求的URL路径不正确、资源不存在等。处理方式包括仔细检查请求的URL路径和资源是否正确,提供清晰的错误消息指导用户找到正确的资源或执行其他操作,并考虑使用自定义404页面提供更好的用户体验。

在处理4xx状态码时,还需要注意以下几点:

根据具体的业务需求和错误处理机制,对可能出现的异常情况进行捕获和处理,以确保系统的稳定性和可用性。

在返回错误时,提供清晰的错误消息和适当的反馈,以帮助用户理解和解决问题。同时,确保错误消息符合统一的标准和规范,以提高用户体验和系统的可维护性。

针对不同的错误码和问题,采取相应的措施进行修复和预防。例如,对于400 Bad Request,可以加强输入验证和数据校验;对于401 Unauthorized,可以优化身份验证机制;对于403 Forbidden,可以调整访问控制策略等。

5xx状态码:

500 Internal Server Error:该状态码表示服务器遇到了一个意外的情况,导致无法完成请求。处理方式包括查看服务器端的日志信息,了解详细的错误信息和原因,然后根据具体情况进行修复。常见的解决方法包括优化服务器性能、增加服务器资源、修复服务器端的代码问题等。

502 Bad Gateway:该状态码表示网关错误,通常是由于服务器作为网关或代理时,接收到了无效的请求或无法处理请求。处理方式包括检查服务器的网络连接和配置,确保服务器能够正确地处理请求。此外,还需要检查上游服务器(例如代理服务器)的配置和状态,确保它们能够正常地提供请求。

503 Service Unavailable:该状态码表示服务器当前无法处理请求,通常是由于服务器过载或正在进行维护。处理方式包括优化服务器性能、增加服务器资源、采取负载均衡策略分散请求到多台服务器等。此外,还可以考虑调整服务器的配置和资源分配,以更好地应对高负载的情况。

504 Gateway Timeout:该状态码表示网关超时,通常是由于服务器作为网关或代理时,未能在规定的时间内完成请求。处理方式包括检查服务器的网络连接和配置,确保服务器能够及时地响应请求。此外,还需要优化服务器的性能和响应时间,以减少超时的可能性。

在处理5xx状态码时,还需要注意以下几点:

仔细查看服务器端的日志信息,了解详细的错误信息和原因。这有助于定位问题的根源,并采取相应的措施进行修复。

根据具体的状态码和业务需求,采取适当的措施进行修复和预防。例如,对于500 Internal Server Error,可以优化服务器性能、修复代码问题等;对于502 Bad Gateway,可以检查服务器的网络连接和配置等。

加强系统的监控和预警机制,及时发现和解决潜在的问题。例如,可以设置监控报警规则,当出现异常情况时自动触发报警通知相关人员进行处理。

在开发和调试过程中,注重代码的规范性和可维护性,减少出现服务器端错误的概率。例如,遵守代码规范、加强输入验证和数据校验等。

5、总结

状态码监测在网络编程中具有非常重要的意义和作用。它可以快速定位问题、提升用户体验、提高系统可用性、便于故障排查以及辅助监控和预警的实现。在实际应用中,需要根据具体情况选择合适的状态码监测方法,确保系统的正常运行和稳定性。

常规
  • 作者:一介闲人(联系作者)
  • 发表时间: 2024-09-12 10:15
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论