HTTP 状态码详解

发布:2024-09-13 16:03 阅读:11 点赞:0

HTTP(超文本传输协议)状态码是客户端(如网页浏览器或移动应用)与服务器之间通信结果的重要指示器。它们提供了有关 HTTP 请求结果的关键信息,使客户端和服务器能够理解并对不同的场景做出适当响应。本文将详细探讨不同类别的 HTTP 状态码的意义和作用。

一. 信息响应(1xx)

这些状态码表示来自服务器的临时响应,告知客户端请求已被接收并理解,且需要进一步的操作。

1. 100 Continue

100 Continue: 服务器确认已接收到客户端的请求头,并指示客户端继续进行请求。

2. 101 Switching Protocols

101 Switching Protocols: 服务器确认客户端请求切换协议,并通过响应中的 Upgrade 头部指示该变更。

3. 102 Processing

102 Processing: 服务器已接收到请求并正在处理,但尚未完成(WebDAV; RFC 2518)。

二. 成功响应(2xx)

这些状态码表示客户端的请求已成功接收、理解和接受。

1. 200 OK

200 OK: 请求成功,服务器返回了请求的资源。

2. 201 Created

201 Created: 请求已被满足,结果是创建了一个新资源。

3. 202 Accepted

202 Accepted: 请求已被接受进行处理,但处理尚未完成。

4. 203 Non-Authoritative Information

203 Non-Authoritative Information: 服务器是一个转换代理,已收到源服务器的 200 OK 响应,但返回了修改过的响应版本。

5. 204 No Content

204 No Content: 服务器成功处理了请求,但不需要返回任何内容。

6. 205 Reset Content

205 Reset Content: 告诉客户端重置文档视图,清除表单数据。

7. 206 Partial Content

206 Partial Content: 服务器满足部分 GET 请求,指示请求的数据范围。

8. 207 Multi-Status

207 Multi-Status: 提供多个独立操作的状态(WebDAV; RFC 4918)。

9. 208 Already Reported

208 Already Reported: 用于 DAV: propstat 响应元素内部,以避免重复列举对同一集合的多个绑定的内部成员(WebDAV; RFC 5842)。

10. 226 IM Used

226 IM Used: 服务器已满足对资源的请求,响应是对应用于当前实例的一个或多个实例操作结果的表示(RFC 3229)。

三. 重定向消息(3xx)

这些状态码表示客户端需要采取额外的操作以完成请求。

1. 300 Multiple Choices

300 Multiple Choices: 指示有多个选项可以选择资源。

2. 301 Moved Permanently

301 Moved Permanently: 请求的资源已永久移动到新 URL。

3. 302 Found

302 Found: 请求的资源临时驻留在不同的 URL,客户端应使用新 URL 进行后续请求。

4. 303 See Other

303 See Other: 对请求的响应可以在另一个 URL 下找到,使用 GET 方法。

5. 304 Not Modified

304 Not Modified: 指示自请求头中指定的版本以来,资源没有被修改。

6. 305 Use Proxy

305 Use Proxy: 请求的资源仅通过代理可用,地址在响应中提供。

7. 307 Temporary Redirect

307 Temporary Redirect: 与 302 相似,指示临时重定向,但客户端应继续使用原 URL 进行未来请求。

8. 308 Permanent Redirect

308 Permanent Redirect: 请求及所有未来请求应使用另一个 URI 重复(RFC 7538)。

四. 客户端错误响应(4xx)

这些状态码表示客户端方面的错误,例如请求格式错误或身份验证问题。

1. 400 Bad Request

400 Bad Request: 由于客户端错误,服务器无法处理请求,通常表示语法错误。

2. 401 Unauthorized

401 Unauthorized: 客户端需要进行身份验证以获得请求的响应。

3. 402 Payment Required

402 Payment Required: 保留供将来使用。

4. 403 Forbidden

403 Forbidden: 服务器理解请求但拒绝授权。

5. 404 Not Found

404 Not Found: 服务器无法找到请求的资源。

6. 405 Method Not Allowed

405 Method Not Allowed: 请求中指定的方法不允许用于请求 URI 标识的资源。

7. 406 Not Acceptable

406 Not Acceptable: 服务器无法生成满足客户端在请求的 "Accept" 头部字段中指定的约束的响应。

8. 407 Proxy Authentication Required

407 Proxy Authentication Required: 类似于 401,但表示客户端需要与代理进行身份验证。

9. 408 Request Timeout

408 Request Timeout: 服务器在准备等待的时间内未接收到完整的请求消息。

10. 409 Conflict

409 Conflict: 请求由于与资源的当前状态发生冲突而无法完成。

11. 410 Gone

410 Gone: 指示请求的资源不再可用于服务器上,并且没有已知的转发地址。

12. 411 Length Required

411 Length Required: 服务器拒绝接受请求,没有定义 Content-Length。

13. 412 Precondition Failed

412 Precondition Failed: 请求头字段中给出的一个或多个条件在服务器上测试时评估为假。

14. 413 Payload Too Large

413 Payload Too Large: 服务器拒绝处理请求,因为有效载荷大于服务器愿意或能够处理的大小。

15. 414 URI Too Long

414 URI Too Long: 服务器拒绝处理请求,因为 URI 超过了服务器愿意解释的长度。

16. 415 Unsupported Media Type

415 Unsupported Media Type: 服务器拒绝接受请求,因为有效载荷格式不受支持。

17. 416 Range Not Satisfiable

416 Range Not Satisfiable: 客户端请求了文件的一部分,但服务器无法提供该部分。

18. 417 Expectation Failed

417 Expectation Failed: 服务器无法满足 Expect 请求头字段的要求。

19. 418 I'm a teapot

418 I'm a teapot: 服务器拒绝冲泡咖啡,因为它是一个茶壶(RFC 2324)。

20. 421 Misdirected Request

421 Misdirected Request: 请求被导向了一个无法生成响应的服务器(RFC 7540)。

21. 422 Unprocessable Entity

422 Unprocessable Entity: 服务器理解请求实体的内容类型,但无法处理包含的指令(WebDAV; RFC 4918)。

22. 423 Locked

423 Locked: 正在访问的资源被锁定(WebDAV; RFC 4918)。

23. 424 Failed Dependency

424 Failed Dependency: 请求失败,因为它依赖的另一个请求失败(WebDAV; RFC 4918)。

24. 425 Too Early

425 Too Early: 表示服务器不愿意处理可能被重放的请求(RFC 8470)。

25. 426 Upgrade Required

426 Upgrade Required: 客户端应切换到不同的协议,如 TLS/1.0(RFC 2817)。

26. 428 Precondition Required

428 Precondition Required: 原始服务器要求请求是有条件的(RFC 6585)。

27. 429 Too Many Requests

429 Too Many Requests: 用户在给定时间内发送了过多请求(RFC 6585)。

28. 431 Request Header Fields Too Large

431 Request Header Fields Too Large: 服务器不愿意处理请求,因为其头字段太大(RFC 6585)。

29. 451 Unavailable For Legal Reasons

451 Unavailable For Legal Reasons: 由于法律要求,服务器拒绝访问资源(RFC 7725)。

五. 服务器错误响应(5xx)

这些状态码表示服务器方面的错误,阻止其完成请求。

1. 500 Internal Server Error

500 Internal Server Error: 通用错误信息,表示服务器端出现了某种问题。

2. 501 Not Implemented

501 Not Implemented: 服务器不支持满足请求所需的功能。

3. 502 Bad Gateway

502 Bad Gateway: 服务器在作为网关或代理时,从上游服务器收到无效响应。

4. 503 Service Unavailable

503 Service Unavailable: 服务器由于临时过载或维护,当前无法处理请求。

5. 504 Gateway Timeout

504 Gateway Timeout: 服务器在作为网关或代理时,未及时从上游服务器收到响应。

6. 505 HTTP Version Not Supported

505 HTTP Version Not Supported: 服务器不支持请求中使用的 HTTP 协议版本。

7. 506 Variant Also Negotiates

506 Variant Also Negotiates: 对请求的透明内容协商导致循环引用(RFC 2295)。

8. 507 Insufficient Storage

507 Insufficient Storage: 服务器无法存储完成请求所需的表示(WebDAV; RFC 4918)。

9. 508 Loop Detected

508 Loop Detected: 服务器在处理请求时检测到无限循环(WebDAV; RFC 5842)。

10. 510 Not Extended

510 Not Extended: 服务器需要进一步扩展请求以完成请求。

11. 511 Network Authentication Required

511 Network Authentication Required: 客户端需要进行身份验证以获得网络访问权限(RFC 6585)。

了解 HTTP 状态码对 Web 开发人员、系统管理员以及任何涉及构建或维护 Web 服务的人士至关重要。通过正确解释这些状态码,开发人员可以有效地诊断和解决问题,从而提供更好的用户体验,促进客户端和服务器之间的顺畅互动。