详解HTTP 状态码

328 阅读9分钟

HTTP 状态码在工作中经常遇到,在面试的时候也经常遇到,下面就简单介绍一下吧
HTTP状态码的 全称为 HTTP Status Code 常见的HTTP状态码有哪些呢

  • 信息响应 (100 - 199)
  • 成功响应 (200 - 299)
  • 重定向消息 (300 - 399)
  • 客户端错误响应 (400 -499)
  • 服务器内部错误 500

[信息响应]

100

这个临时响应表示, 当前的请求可以继续, 如果完成可以忽略

101

该代码是响应客户端的 Upgrade (en-US) 请求头发送的, 指明服务器即将切换的协议。

102

表示服务器已经收到并开始处理这个请求, 但当前没有响应可用。

103

次代码状态主要与Link 链接头一起使用, 允许用户在浏览器准备响应阶段开始预加在一些资源

[响应成功]

201

请求已经成功, 并且创建了一些资源, 通常是POST 或者PUT 请求之后的响应

201

请求已经接受到, 但是还未响应,暂时没有结果

203

服务器已经成功处理了请求, 但是返回的实体头部信息不是原生服务器上的有效信息集合, 而是来自第三方或者是拷贝的信息

204

请求的没有内容可发送, 但是头部字段可能有用,用户代理可能会用此时的头部信息做缓存

205

告诉用户代理重置发送此请求的文档

206

当从客户端发送Renge范围标头, 表示只请求一部分资源

207

对于多个状态代码都可能合适的情况,传输有关多个资源的信息。

208

在 DAV 里面使用 <dav:propstat> 响应元素以避免重复枚举多个绑定的内部成员到同一个集合。

226

服务器已经完成了对资源的 GET请求 , 并且响应是对当前实例应用的一个或多个实例操作结果的表示

[重定向消息]

300

请求拥有不只一个的可鞥响应。用户带来或者用户应当从中选择一个。 (没有标准化的方法来选择其中一个响应,但是建议使用指向可能性的HTML链接,以便用户可以选择。)

301

请求资源的URL已永久更改。在响应中给出了新的URL。

302

此响应代码表示所请求资源的URI已 暂时 更改。未来可能会对URI进行进一步的改变。因此,客户机应该在将来的请求中使用这个相同的URI。

303

服务器发送此响应,以指示客户端通过一个GET请求在另一个URI中获取所请求的资源。

304

这是用于缓存的目的。它告诉客户端响应还没有被修改,因此客户端可以继续使用相同的缓存版本的响应。

305

在HTTP规范中定义,以指示请求的响应必须被代理访问。由于对代理的带内配置的安全考虑,它已被弃用。

307

服务器发送此响应,以指示客户端使用在前一个请求中使用的相同方法在另一个URI上获取所请求的资源。这与302 FoundHTTP响应代码具有相同的语义,但用户代理 不能 更改所使用的HTTP方法:如果在第一个请求中使用了POST,则在第二个请求中必须使用POST

308

这意味着资源现在永久位于由Location: HTTP Response 标头指定的另一个 URI。 这与 301 Moved Permanently HTTP 响应代码具有相同的语义,但用户代理不能更改所使用的 HTTP 方法:如果在第一个请求中使用 POST,则必须在第二个请求中使用 POST

[客户端错误响应]

400

由于被认为是客户端错误(例如,错误的请求语法、无效的请求消息帧或欺骗性的请求路由),服务器无法或不会处理请求。

401

虽然HTTP标准指定了"unauthorized",但从语义上来说,这个响应意味着"unauthenticated"。也就是说,客户端必须对自身进行身份验证才能获得请求的响应。

402

此响应代码保留供将来使用。创建此代码的最初目的是将其用于数字支付系统,但是此状态代码很少使用,并且不存在标准约定。

403

客户端没有访问内容的权限;也就是说,它是未经授权的,因此服务器拒绝提供请求的资源。与401 Unauthorized不同,服务器知道客户端的身份。

404

服务器找不到请求的资源。在浏览器中,这意味着无法识别URL。在API中,这也可能意味着端点有效,但资源本身不存在。服务器也可以发送此响应,而不是403 Forbidden,以向未经授权的客户端隐藏资源的存在。这个响应代码可能是最广为人知的,因为它经常出现在网络上。

405

服务器知道请求方法,但目标资源不支持该方法。例如,API可能不允许调用DELETE来删除资源

406

当web服务器在执行服务端驱动型内容协商机制后,没有发现任何符合用户代理给定标准的内容时,就会发送此响应。

407

类似于 401 Unauthorized 但是认证需要由代理完成.

408

此响应由一些服务器在空闲连接上发送,即使客户端之前没有任何请求。这意味着服务器想关闭这个未使用的连接。由于一些浏览器,如Chrome、Firefox 27+或IE9,使用HTTP预连接机制来加速冲浪,所以这种响应被使用得更多。还要注意的是,有些服务器只是关闭了连接而没有发送此消息。

409

当请求与服务器的当前状态冲突时,将发送此响应。

410

当请求的内容已从服务器中永久删除且没有转发地址时,将发送此响应。客户端需要删除缓存和指向资源的链接。HTTP规范打算将此状态代码用于“有限时间的促销服务”。API不应被迫指出已使用此状态代码删除的资源。

411

服务端拒绝该请求因为 Content-Length 头部字段未定义但是服务端需要它.

421

客户端在其头文件中指出了服务器不满足的先决条件。

413

请求实体大于服务器定义的限制。服务器可能会关闭连接,或在标头字段后返回重试Retry-After

414

客户端请求的URI比服务器愿意接收的长度长。

415

服务器不支持请求数据的媒体格式,因此服务器拒绝请求。

416

无法满足请求中Range标头字段指定的范围。该范围可能超出了目标URI数据的大小。

417

此响应代码表示服务器无法满足Expect请求标头字段所指示的期望。

418

服务端拒绝用茶壶煮咖啡。笑话,典故来源茶壶冲泡咖啡

421

请求被定向到无法生成响应的服务器。这可以由未配置为针对请求URI中包含的方案和权限组合生成响应的服务器发送。

422

请求格式正确,但由于语义错误而无法遵循。

423

正在访问的资源已锁定。

424

由于前一个请求失败,请求失败。

425

表示服务器不愿意冒险处理可能被重播的请求。

426

服务器拒绝使用当前协议执行请求,但在客户端升级到其他协议后可能愿意这样做。 服务端发送带有Upgrade (en-US) 字段的426响应 来表明它所需的协议(们)。

428

源服务器要求请求是有条件的。此响应旨在防止'丢失更新'问题,即当第三方修改服务器上的状态时,客户端GETs获取资源的状态,对其进行修改并将其PUTs放回服务器,从而导致冲突。

429

用户在给定的时间内发送了太多请求("限制请求速率")

431

服务器不愿意处理请求,因为其头字段太大。在减小请求头字段的大小后,可以重新提交请求。

451

用户代理请求了无法合法提供的资源,例如政府审查的网页。

服务端错误响应

500

服务器遇到了不知道如何处理的情况。

501

服务器不支持请求方法,因此无法处理。服务器需要支持的唯二方法(因此不能返回此代码)是 GET and HEAD.

502

此错误响应表明服务器作为网关需要得到一个处理这个请求的响应,但是得到一个错误的响应。

503

服务器没有准备好处理请求。常见原因是服务器因维护或重载而停机。请注意,与此响应一起,应发送解释问题的用户友好页面。这个响应应该用于临时条件和如果可能的话,HTTP头Retry-After字段应该包含恢复服务之前的估计时间。网站管理员还必须注意与此响应一起发送的与缓存相关的标头,因为这些临时条件响应通常不应被缓存。

504

当服务器充当网关且无法及时获得响应时,会给出此错误响应。

505

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

506

服务器存在内部配置错误:所选的变体资源被配置为参与透明内容协商本身,因此不是协商过程中的适当终点。

507

无法在资源上执行该方法,因为服务器无法存储成功完成请求所需的表示。

508

服务器在处理请求时检测到无限循环。

510

服务器需要对请求进行进一步扩展才能完成请求。

511

指示客户端需要进行身份验证才能获得网络访问权限。