HTTP状态码详解
概览
2xx 成功
2XX 的响应结果表明请求被正常处理了。
200 OK
204 No Content
206 Partial Content
3xx 重定向
3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。
301 Moved Permanently
永久性重定向。 该状态码表示请求的资源已被分配了新的 URI, 以后应使用资源现在所指的 URI。 也就是说, 如果已经把资源对应的 URI保存为书签了, 这时应该按 Location 首部字段提示的 URI 重新保存。
302 Found
和301相似,但是代表资源不是永久性移动的。
303 See Other
303 状态码和 302 Found 状态码有着相同的功能, 但 303状态码明确表示客户端应当采用 GET 方法获取资源, 这点与 302 状态码有区别。
304 Not Modified
书上的很不好理解,什么叫做为符合条件的请求? 搜索了一下。当你发出一个GET请求的时候服务器会从缓存中调用你要访问的内容,这个时候服务器就可以判断这个页面是不是更新过了,如果未更新过那么他会给你返回一个304状态码。
307 Temporary Redirect
和302类似,但是不会把POST编程GET请求。
4xx错误
客户端错误。
404 not found
先从我们熟悉的状态码说起,其实我当时看到这个地方很奇怪,明明是服务端的东西不见了,为啥这里是客户端错误呢?
下面这两种情况都算是客户端错误:
-
客户端请求到了不合法的资源
-
客户端原来可以请求到,但是现在没了
404 是一个 http 错误代码,指的是网页不存在。404 的含义:第一个 4 表示客户端出错,第二个 0 表示你把网址打错了;最后表示这个错误代码在 4 开头的错误代码中排行老四。这个时候其实人家服务端是没有啥错误的,只是没有你要这个资源而已,并不能算服务端错误。
400 Bad Request
报文中存在语法错误。
401 Unauthorized
该状态码表示发送的请求需要有通过 HTTP 认证( BASIC 认证、DIGEST 认证)的认证信息。 另外若之前已进行过 1 次请求, 则表示用户认证失败
403 Forbidden
5xx 服务器错误
500 Internal Server Error
该状态码表明服务器端在执行请求时发生了错误。 也有可能是应用存在的 bug 或某些临时的故障。这个就我的开发经验经验来说还比较常见的,一般看看是不是报Exception啥的。
503 Service Unavailable
该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。