状态码的类别
类别 | 原因短语 | |
---|---|---|
1XX | Information | 接收的请求正在处理 |
2XX | Success | 请求正常处理完毕 |
3XX | Redirection | 需要进行附加操作以完成请求 |
4XX | Client Error | 服务器无法处理请求 |
5XX | Server Error | 服务器处理请求出错 |
2XX
200 OK :使用GET方法时,对应请求资源的实体会作为响应返回;而使用 HEAD 方法时,不返回资源的实体,只返回首部
204 No Content:请求处理成功,但返回的响应报文中不含实体的主体部分
206 Partial Content: 表示客户端进行了范围请求,并且服务器成功执行了请求。响应报文中包含了Content-Range指定范围的实体内容
GET /tip.jpg HTTP/1.1
Host: xxx
Range: bytes = 5001-10000
HTTP/1.1 206 Partial Content
Date: ...
Content-Range: bytes 5001-10000/10000
Content-Length: 5000
Content-Type: image/jpeg
3XX
301 Moved Permanently:永久重定向。会按照Location首部字段提示的新URI更新书签。页面内容更新,且地址栏网址也更新
302 Found:临时重定向。不更新书签。页面内容更新,但地址栏网址不更新。一般用来做临时跳转,比如,未登录状态访问权限页面,会重定向到登录页面
303 See Other: 与302类似,只不过303表示明确要求客户端应采用GET方法获取资源。比如使用POST访问CGI接口程序,执行后的处理结果是希望客户端能以GET方法重定向到另一个URI上去,这时候用303
- 但就目前来看,当301/302/303响应状态码返回时,几乎所有浏览器都会把POST方法改成GET,并删除请求报文内的主体,之后请求会自动再次发送。
- 301/302标准是禁止将POST改成GET的(不允许客户端在重定向时改变请求方式),但实际使用中大家都这么做(改变请求方式)
304 Not Modified:该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304 状态码返回时,不包含任何响应的主体部分。304 虽然被划分在 3XX 类别中,但是和重定向没有关系。
-
附带条件的请求指的是采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Unmodified-Since,If-Range中任一首部。
-
If-Range: HTTP 请求头字段用来使得 Range 头字段在一定条件下起作用:当字段值中的条件得到满足时,Range 头字段才会起作用,同时服务器回复
206
部分内容状态码,以及Range 头字段请求的相应部分;如果字段值中的条件没有得到满足,服务器将会返回200
OK
状态码,并返回完整的请求资源(新资源)。字段值中既可以用
Last-Modified
时间值用作验证,也可以用ETag
标记作为验证,但不能将两者同时使用。If-Range 头字段通常用于断点续传的下载过程中,用来自从上次中断后,确保下载的资源没有发生改变。
字段值中既可以用
Last-Modified
时间值用作验证,也可以用ETag
标记作为验证,但不能将两者同时使用。If-Range: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
If-Range: <etag>
307 Temporary Redirect:临时重定向。与302类似。但是307严格遵照标准,不会从POST变为GET
4XX
400 Bad Request:请求报文中存在语法错误
401 Unauthorized:该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示用 户认证失败
403 Forbidden:拒绝请求。未获得文件系统的访问授权,访问权限出现某些问题(从未授权的发送源 IP 地址试图访问)等列举的情况都可能是发生 403 的原因
404 Not Found:服务器上无法找到请求的资源。也可以在服务器端拒绝请求且不想说明理由时使用
5XX
500 Internal Server Error:服务器端在执行请求时发生了错误
503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求(服务器挂了)