一、什么是HTTP状态码
HTTP状态码(HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。
它由 RFC2616 规范定义的 ,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等规范扩展。
也就是当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
二、常见状态码
下面是常见的HTTP状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
三、HTTP状态码分类
HTTP状态码由三个十进制数字组成,第一个数字定义了状态码的类型,HTTP状态码共分为5种类型:
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作。 |
2** | 成功,操作被成功接收并处理。 |
3** | 重定向,需要进一步的操作以完成请求。 |
4** | 客户端错误,请求包含语法错误或无法完成请求。 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误。 |
四、HTTP状态码列表详解
状态码 | 英文说明 | 描述说明 |
---|---|---|
信息性状态码 | ||
100 | 初始的请求已经接受,客户应当继续发送请求的其余部分 | |
101 | ('switching_protocols') | 服务器将遵从客户的请求转换到另外一种协议 |
102 | ('processing') | |
103 | ('checkpoint') | |
122 | ('uri_too_long', 'request_uri_too_long') | |
成功状态码:(请求成功)表示成功处理了请求的状态代码。 | ||
200 | ('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '√') | (成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。 |
201 | ('created') | (已创建)请求成功并且服务器创建了新的资源。 |
202 | ('accepted') | (已接受)服务器已接受请求,但尚未处理。 |
203 | ('non_authoritative_info', 'non_authoritative_information') | (非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一来源。 |
204 | ('no_content') | (无内容)服务器成功处理了请求,但没有返回任何内容。 |
205 | ('reset_content', 'reset') | (重置内容)服务器成功处理了请求,但没有返回任何内容。 |
206 | ('partial_content', 'partial') | (部分内容)服务器成功处理了部分GET请求。 |
207 | ('multi_status', 'multiple_status', 'multi_stati', 'multiple_stati') | |
208 | ('already_reported') | |
226 | ('im_used') | |
重定向状态码:(请求成功)表示成功处理了请求的状态代码。 | ||
300 | ('multiple_choices') | (多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent)选择一项操作,或提供操作列表供请求者选择。 |
301 | ('moved_permanently', 'moved', '\\o-') | (永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。 |
302 | ('found') | (临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 |
303 | ('see_other', 'other') | (查看其他位置)请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。 |
304 | ('not_modified') | (未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 |
305 | ('user_proxy') | (使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。 |
306 | ('switch_proxy') | |
307 | ('temporary_redirect', 'temporary_moved', 'temporary') | (临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。 |
308 | ('permanent_redirect') | |
客户端请求错误:(请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。 | ||
400 | ('bad_request', 'bad') | (错误请求)服务器不理解请求的语法。 |
401 | ('unauthorized') | (未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。 |
402 | ('payment_required', 'payment') | |
403 | ('forbiddent') | (禁止)服务器拒绝请求。 |
404 | ('not_found', '-o-') | (未找到)服务器找不到请求的网页。 |
405 | ('method_not_allowed', 'not_allowed') | (方法禁用)禁用请求中指定的方法。 |
406 | ('not_acceptable') | (不接受)无法使用请求的内容特性响应请求的网页。 |
407 | ('proxy_authentication_required', 'proxy_auth', 'proxy_authentication') | (需要代理授权)此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。 |
408 | ('request_timeout', 'timeout') | (请求超时)服务器等候请求时发生超时。 |
409 | ('conflict') | (冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。 |
410 | ('gone') | (已删除)如果请求的资源已永久删除,服务器就会返回此响应。 |
411 | ('length_required') | (需要有效长度)服务器不接受不含有效内容长度标头字段的请求。 |
412 | ('precondition_failed', 'precondition') | (未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件。 |
413 | ('request_entity_too_large') | (请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 |
414 | ('request_uri_too_large') | (请求的URI过长)请求的URI(通常为网址)过长,服务器无法处理。 |
415 | ('unsupported_media_type', 'unsupported_media', 'media_type') | (不支持的媒体类型)请求的格式不受请求页面的支持。 |
416 | ('request_range_not_satisfiable', 'requested_range', 'range_not_satisfiable') | (请求范围不符合要求)如果页面无法提供请求的范围,则服务器会返回此状态代码。 |
417 | ('expectation_failed') | (未满足期望值)服务器未满足"期望"请求标头字段的要求。 |
418 | ('im_a_teapot', 'teapot', 'i_am_a_teapot') | |
421 | ('misdirected_request') | |
422 | ('unprocessable_entity', 'unprocessable') | |
423 | ('locked') | |
424 | ('failed_dependency', 'dependency') | |
425 | ('unordered_collection', 'unordered') | |
426 | ('upgrade_required', 'upgrade') | |
428 | ('precondition_required', 'precondition') | |
429 | ('too_many_requests', 'too_many') | |
431 | ('header_fields_too_large', 'fields_too_large') | |
444 | ('no_response', 'none') | |
449 | ('retry_with', 'retry') | |
450 | ('blocked_by_windows_parental_controls', 'parental_controls') | |
451 | ('unavailable_for_legal_reasons', 'legal_reasons') | |
499 | ('client_closed_request') | |
服务端错误状态码:(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。 | ||
500 | ('internal_server_error', 'server_error', '/o\\', '×') | (服务器内部错误)服务器遇到错误,无法完成请求。 |
501 | ('not_implemented') | (尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 |
502 | ('bad_gateway') | (错误网关)服务器作为网关或代理,从上游服务器收到无效响应。 |
503 | ('service_unavailable', 'unavailable') | (服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 |
504 | ('gateway_timeout') | (网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
505 | ('http_version_not_supported', 'http_version') | (HTTP版本不受支持)服务器不支持请求中所用的HTTP协议版本。 |
506 | ('variant_also_negotiates') | |
507 | ('insufficient_storage') | |
509 | ('bandwidth_limit_exceeded', 'bandwith') | |
510 | ('not_extended') | |
511 | ('network_authentication_required', 'network_auth', 'network_authentication') |