说到 404 Not Found 估计大家都很熟悉,资源没有被找到,这是一个很常见的错误状态码。今天就聊一聊有 HTTP 的一些常见状态码。
HTTP 状态码分五类:
1xx 信息性状态类,接收的请求正在处理2xx 成功状态类,请求正常处理完毕3xx 重定向状态类,需要进行附加操作以完成请求4xx 客户端错误码状态类,服务器无法处理请求5xx 服务器错误状态类,服务器处理请求出错这个状态码是最常见的状态码没有之一,表示请求成功并且请求正常返回。
请求被处理了,但是响应里面没有实体内容。这个状态使用非常少,建议使用 200 代替。
永久性重定向,该状态码表示请求的资源已被分配了新的 URI,以后访问新的 URI 就可以了,一般用于游览器书签的更新。
临时性重定向,表示请求的资源已被分配了新的 URI。一般用于 URI 参数不完整的时候临时跳转首页一类的地方(更大的可能是 400 或者 500)。
请求报文中存在语法错误。一般发送 GET 请求的时候,参数没有写对或者没有写全,都会返回这个错误状态。
访问被服务器拒绝,一般是用户认证没有通过,或者用户权限不够造成。
请求的资源不存在,一般是 URI 拼写错误造成,或者拒绝处理而又不想给出原因,比如:爬虫。
请求在服务器端执行的时候发生了错误,一般参数处理出现异常又没有捕捉就会给出这个错误。
一个新手经常犯的错误就是,明明返回的是 200 却提示错误信息。这里要明确一点,HTTP 协议是应用层,状态码在报文头部里,而错误信息在报文主体里。比如:A 发送一个数据给 B ,B 说你这个数据有问题,请重新发送。从某种角度来说,A 和 B 完成了一次交流(200),但是 B 说 A 错了。就像你网页提示你帐号密码输入错误一样(PS:举例帐号只是方便理解,具体情况具体分析)。
上面我是总结的一些常见的状态码,并且简单的举例了一些可能出现的场景。但是随着程序的健壮性越来越好,在游览器一般都只能看见 200 和 404,其余状态码都很少见了。
欢迎大家关注我的微信公众号:卡戎