HTTP状态码详解

HTTP状态码

HTTP状态码类别

类别 原因短语
1XX Informational(信息性状态码) 接受的请求正在处理
2XX Success(成功性状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

2XX成功

2xx的响应结果表示请求被正常处理。

200OK

表示客户端发来的请求被服务端正常处理。

例如GET方法对应请求资源的实体作为响应返回,HEAD方法对应请求资源的实体首部不随报文主体作为响应返回。

204 No Content

表示服务器接受的请求已经成功处理,但是在返回的响应报文中不包含实体的主体部分。也不允许返回任何实体主体。

1
{status: 0, message:""} //status 0代表成功, 非零的时候, message中包含出错信息.

所以有一些服务, 只是返回成功与否的时候, 可以尝试使用HTTP的状态码来作为返回信息, 而省掉多余的数据传输, 比如REST中的DELETE和上述Ajax请求.

206 Partial Content

该状态码表示客户端进行了范围请求,而服务器成功执行了这部分GET请求。响应报文中包含Content-Range指定范围的实体内容。

3XX重定向

3XX表示浏览器需要执行某些特殊处理以正确处理请求。

301 Moved Permanently

表示请求资源被分配了新的URI,这种对搜索引擎是友好的,一旦网页a永久定位到网页b,那么使用301重定向后,搜索引擎会将a的累积权重传到网页b。(例如Google会传大部分权重)

302 Found

临时性重定向,表示该资源已被重新分配了URI,希望这次能够用新的URI访问。

303 See Other

表示请求对应的资源存在另一个URI,应该使用GET方法定向获取请求资源。

303主要目的是允许POST请求的响应将客户端定位到某个资源上。比如说,在文件上传完成后让客户端自动重定向到一个上传成功的结果页面。

304 Not Modified

该状态码表示客户端发送附带条件的请求时,服务端允许请求访问资源,但是未满足条件,报文中不包含任何响应的实体。

307 Temporary Redirect

与302状态码有着相同的含义,但是307不会从POST变成GET。

4XX 客户端错误

400 Bad Request

表示报文中存在语法错误。

401 Unauthorized

表示请求需要有通过HTTP认证的认证信息。

当浏览器初次接受401,会弹出认证用的对话框。

403 Forbidden

表示对请求资源的访问被服务器拒绝。

比如未获得文件系统的访问授权。

404 Not Found

表明服务器上无法找到请求的资源。

5XX服务器错误

500 Internal Server Error

该状态码表明服务器端在执行请求时发生了错误。 也有可能是 Web应用存在的 bug 或某些临时的故障。

503 Service Unavailable

表示服务器处于超负荷或者停机维护状态,无法处理请求。

参考文献

《图解HTTP》上野 宣

HTTP204和205的应用

你所知道的3xx状态码