HTTP的状态码详细介绍

HTTP 状态码是服务器响应客户端请求时返回的三位数字代码,用于表示请求的结果。它们被分为五个不同的类别,每个类别代表不同类型的响应。状态码的格式一般为三位数字,每一位的含义如下:

第一位数字:表示响应的类别。

  • 1xx: 信息性响应
  • 2xx: 成功响应
  • 3xx: 重定向响应
  • 4xx: 客户端错误
  • 5xx: 服务器错误

接下来,我将对每个类别及其常见状态码做详细介绍。

1xx:信息性状态码

信息性状态码表示请求已被接收,继续处理。它们通常在连接保持开放的情况下使用,作为对请求的初步回应。

状态码

含义

说明

100

Continue

继续执行请求。客户端应继续发送请求的剩余部分。

101

Switching Protocols

服务器正在切换协议。客户端请求服务器切换到不同的协议(如 HTTP/1.1 到 HTTP/2)。

102

Processing

服务器已接受并正在处理请求,但尚未完成处理。

103

Early Hints

服务器用来预先发送一些响应头,以便客户端提前准备请求。

2xx:成功状态码

2xx 状态码表示服务器已成功接收并处理了请求。不同的状态码代表不同的成功情况。

状态码

含义

说明

200

OK

请求已成功。请求的响应头或数据将在响应体中返回。

201

Created

请求已被成功处理,并创建了新的资源。通常用于 POST 请求的响应。

202

Accepted

请求已被接受,但尚未处理。

203

Non-Authoritative Info

服务器返回的响应包含非授权的信息,可能来自缓存或代理服务器。

204

No Content

请求成功,但服务器没有返回任何内容。

205

Reset Content

请求成功,服务器要求客户端重置(清空)视图。

206

Partial Content

请求成功,服务器返回部分数据,通常用于处理范围请求(Range)。

207

Multi-Status

服务器返回多个状态码,通常用于 WebDAV 中的多状态响应。

208

Already Reported

服务器已报告过该资源,不需要再次处理。

226

IM Used

服务器已经应用了请求的某些变化(例如,部分响应)。

3xx:重定向状态码

3xx 状态码表示客户端必须采取进一步的操作才能完成请求,通常是需要重定向到另一个位置。

状态码

含义

说明

300

Multiple Choices

资源的多个表示形式可供选择,客户端需要选择一个。

301

Moved Permanently

请求的资源已被永久移动到新的 URL,客户端应使用新的 URL 发起后续请求。

302

Found

请求的资源临时移动,客户端应继续使用原 URL,重定向到新的位置。

303

See Other

客户端应使用 GET请求去访问另一个资源。

304

Not Modified

资源未被修改,客户端可以使用缓存的版本。

305

Use Proxy

请求的资源必须通过代理访问。

306

Switch Proxy

已废弃,不再使用。

307

Temporary Redirect

请求的资源临时重定向,客户端应使用原请求方法进行重定向。

308

Permanent Redirect

请求的资源永久重定向,客户端应使用新的 URL 进行后续请求。

4xx:客户端错误状态码

4xx 状态码表示请求中有错误,通常是客户端发送的请求有问题。服务器无法理解或处理请求。

状态码

含义

说明

400

Bad Request

请求无效,通常是因为请求语法错误或请求体不符合格式。

401

Unauthorized

请求要求用户的身份验证,未提供身份验证信息或身份验证失败。

402

Payment Required

预留状态码,未来可能用于要求支付。

403

Forbidden

服务器理解请求,但拒绝执行。通常是权限不足。

404

Not Found

请求的资源不存在。

405

Method Not Allowed

请求的方法(如 GETPOST)不被允许。

406

Not Acceptable

请求的资源不可接受,通常是由于请求头中的 Accept不匹配。

407

Proxy Authentication

Required

需要通过代理服务器进行身份验证。

408

Request Timeout

请求超时,客户端在指定时间内未发送请求或未完成请求。

409

Conflict

请求与当前资源状态冲突。

410

Gone

请求的资源已被永久删除,不再可用。

411

Length Required

请求需要提供 Content-Length头信息,但该信息缺失。

412

Precondition Failed

请求头中的某个先决条件失败,导致请求无法继续处理。

413

Payload Too Large

请求体过大,无法处理。

414

URI Too Long

请求的 URI 太长,服务器无法处理。

415

Unsupported Media Type

请求的媒体类型不被支持。

416

Range Not Satisfiable

请求的范围不符合资源,通常在处理部分请求时出现。

417

Expectation Failed

服务器无法满足请求头中的 Expect字段要求。

418

I'm a teapot

HTTP 418 是一个愚蠢的状态码,表示 "我是一个茶壶",

来自 RFC 2324,通常用于玩笑。

421

Misdirected Request

请求被错误地指向了某个服务器,通常是因为 DNS 错误。

422

Unprocessable Entity

请求格式正确,但由于语义错误无法处理。

423

Locked

资源被锁定,无法进行修改。

424

Failed Dependency

依赖请求失败,通常用于 WebDAV。

425

Too Early

请求太早,服务器尚未准备好处理。

426

Upgrade Required

需要升级协议,服务器支持某个更高版本的协议。

427

Unassigned

尚未分配。

428

Precondition Required

请求需要先决条件,且没有满足条件的请求。

429

Too Many Requests

请求次数过多,通常是由于频率限制(如 API 请求次数限制)。

431

Request Header Fields Too Large

请求头字段过大,服务器无法处理。

451

Unavailable For Legal Reasons

由于法律原因,资源无法访问。

5xx:服务器错误状态码

5xx 状态码表示服务器内部错误,通常是服务器在处理请求时发生了问题,无法完成请求。

状态码

含义

说明

500

Internal Server Error

服务器内部错误,导致无法完成请求。

501

Not Implemented

服务器不支持请求的功能或方法。

502

Bad Gateway

网关或代理服务器收到错误响应。

503

Service Unavailable

服务不可用,通常是因为服务器过载或正在维护。

504

Gateway Timeout

网关或代理服务器请求超时。

505

HTTP Version Not Supported

服务器不支持请求中使用的 HTTP 版本。

506

Variant Also Negotiates

服务器存在配置错误,导致无限循环。

507

Insufficient Storage

服务器无法存储完成请求所需的内容,通常用于 WebDAV。

508

Loop Detected

服务器检测到无限循环。

510

Not Extended

请求需要扩展,但没有提供所需的扩展。

511

Network Authentication Required

需要网络身份验证才能访问资源。

总结

  • 2xx:表示请求成功,处理完成。
  • 3xx:表示请求需要重定向,客户端应进行相应操作。
  • 4xx:表示客户端的错误请求。
  • 5xx:表示服务器端的错误。

理解 HTTP 状态码的分类和含义,对于构建健壮的 Web 应用和 API 至关重要。通过合理地返回相应的状态码,能够向客户端清晰地传达请求的处理结果,帮助用户和开发者更高效地解决问题。

全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-12-28 15:23
国网南瑞北京科东公司 HR说是统一价 月薪13k,年终8w,总包28w 硕士985
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务