4.1状态码告知服务器端返回的请求结果类别原因短语1XXInformational(信息性状态码)收到的请求正在处理中2XXSuccess(成功状态码)请求被正常处理。3XXRedirection(重定向状态码)需要额外的操作才能完成请求。4XXClientError(客户端错误状态码)服务器无法处理请求。5XXServerError(服务器错误状态码)服务器处理请求仅RFC2616中就记录了40种HTTP状态码。如WebDAV(Web-basedDistributedAuthoringandVersioning,基于万维网的分布式创作和版本控制)(RFC4918、5842)和附加的HTTP状态码(RFC6585)等扩展,数量达到60多个。4.22XX成功4.2.1200OK表示客户端发送的请求在服务器端已经正常处理。在响应消息中,随着方法的不同,与状态码一起返回的信息会发生变化。例如,使用GET方法时,会返回请求资源对应的实体作为响应;而使用HEAD方法时,请求资源对应的实体头不会随消息体作为响应返回(即响应中只返回头,不会返回实体的主体部分).4.2.2204NoContent此状态码表示服务器收到的请求已成功处理,但返回的响应消息中不包含实体的body部分。此外,不允许返回任何实体的主体。4.2.3206PartialContent该状态码表示客户端发起了范围请求,服务器成功执行了这部分GET请求。响应消息包含Content-Range指定范围内的实体内容。4.33XX重定向3XX响应结果表明浏览器需要进行一些特殊处理才能正确处理请求。4.3.1301MovedPermanently永久重定向。此状态代码表示已为请求的资源分配了一个新的URI,并且将来应该使用该资源现在引用的URI。也就是说,如果你已经将该资源对应的URI保存为书签,你应该根据Location头域提示的URI重新保存。像下面给出的请求URI,当忘记在指定资源路径末尾添加斜线“/”时,就会产生301状态码。http://example.com/sample4.3.2302找到临时重定向。这个状态码表示请求的资源已经分配了一个新的URI,希望用户(此时)可以使用新的URI访问。类似于301MovedPermanently状态码,但是302状态码代表的资源不是永久移动的,只是暂时的。也就是说,被移动的资源对应的URI以后可能会发生变化。例如,用户将URI保存为书签,但并没有像出现301状态码时那样更新书签,而是保留了返回302状态码的页面对应的URI。4.3.3303SeeOther该状态码表示请求对应的资源还有另一个URI,应该使用GET方法获取请求的资源。303状态码和302Found状态码功能相同,但是303状态码明确表示客户端应该使用GET方式获取资源,这与302状态码不同。当返回301、302、303响应状态码时,几乎所有浏览器都会将POST改为GET并删除请求报文中的body,然后自动再次发送请求。301和302标准禁止将POST方法改为GET方法,但是大家在实际使用中都会这样做。4.3.4304NotModified该状态码表示客户端发送条件请求2,服务器允许请求访问资源,但条件不满足。返回304状态码时,不包含响应体。304虽然属于3XX范畴,但与重定向无关。2条件请求是指使用GET方式的请求报文包含If-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中的任意一个header。4.44XX客户端错误4.4.1400BadRequest该状态码表示请求消息中存在语法错误。当出现错误时,需要修改请求内容,重新发送请求。否则,浏览器会将此状态代码视为200OK。4.4.2401Unauthorized该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外,如果之前有请求过,则表示用户认证失败。4.4.3403Forbidden该状态码表示访问请求的资源被服务器拒绝。服务器没有必要给出详细的拒绝原因,但如果要解释,可以在实体正文中描述原因,让用户看到。对文件系统的未授权访问、访问权限的一些问题(试图从未授权的源IP地址访问)等可能是403发生的原因。4.4.4404NotFound该状态码表示请求的资源在服务器上找不到。另外,也可以用在服务器拒绝请求又不想解释原因的时候。4.55XX服务器错误5XX响应会导致服务器本身出现错误。4.5.1500InternalServerError该状态码表示服务器端在执行请求时发生错误。它也可能是Web应用程序中的错误或临时故障。4.5.2503ServiceUnavailable该状态码表示服务器暂时过载或停机维护,现在无法处理请求。如果事先知道解决上述情况需要的时间,最好写上RetryAfter头域返回给客户端。状态码与状态不一致许多返回的状态码响应是错误的,但用户可能没有意识到这一点。例如,如果Web应用程序内部发生错误,状态码仍会返回200OK。这种情况经常会遇到。最后搭建了《图解HTTP》分享阅读会,有兴趣的小伙伴可以一起阅读(ardenzhaogx)
