HTTP状态码详解

发布时间:2024年01月10日

1XX(临时响应)

这些状态码表示服务器已收到请求,正在进行处理。但请求尚未完成,也没有任何响应内容返回给客户端

  • 100 Continue:继续,通常用于表明客户端可以继续发送请求主体。

  • 101 Switching Protocols:(协议切换)状态码表示服务器应客户端升级协议的请求(Upgrade(en-US) 请求头)正在切换协议

  • 103 Early Hints: 信息状态响应码,一般和Link header(首部)一起使用,来允许用户在服务器还在准备响应数据的时候预加载一些资源。这样说可能有点抽象,举个例子:

    • 在很多Web网站加载时候,都会先加载出来HTML页面,才能进一步知道需要加载那些CSS或者JS,那么等待HTML加载的这段时间就被浪费了

    • 103状态码,就可以让服务器在处理主资源的时候同时向浏览器发送一些关键的子资源,用来提高页面渲染的效率

2XX(成功)

这些状态码表明请求已经被服务器成功接收、理解并接受

  • 200 OK : 表明请求已经成功,对于不同的请求方式代表的意义不一样

    • GET: 已经取得资源,并将资源添加到响应的消息体中

    • HEAD: 响应的消息体为头部信息

    • POST: 响应的消息体中包含此次请求的结果

    • TRACE: 响应的消息体中包含服务器接收到的请求信息

  • 201 Created:代表成功的应答状态码,表示请求已经被成功处理,并且创建了新的资源,这种状态码通常是作为POST请求的返回值

  • 202 Accepted:表示服务器端已经收到请求消息,但是尚未进行处理

    • 但是对于请求的处理却是无保证的,即稍后无法通过 HTTP 协议给客户端发送一个异步请求来告知其请求的处理结果。

    • 这个状态码被设计用来将请求交由另外一个进程或者服务器来进行处理,或者是对请求进行批处理的情形。

  • 203 Non-Authoritative Information:表示请求已经成功被响应,但是获得的负载与源头服务器的状态码为 200 (OK) 的响应相比,经过了拥有转换功能的 proxy(代理服务器)的修改,简单来说,就是消息是由第三方或者并非原始服务器生成

    • 假设一个Web缓存服务器在向原始服务器发送请求时,由于某种原因未能接收到完整或最新的响应,但它基于已有的缓存和其他来源的信息生成了一个近似的响应。在这种情况下,缓存服务器可以返回203状态码,以表明响应内容不是直接从原始服务器获取的

  • 204 No Content:请求已成功处理,但没有内容需要返回

  • 205 Reset Content:用来通知客户端重置文档视图,比如清空表单内容、重置 canvas 状态或者刷新用户界面

  • 206 Partial Content:表示服务器成功处理了客户端的范围请求,并返回了所请求资源的部分内容。这是一种针对大文件或流媒体等资源的断点续传或者分段下载机制的支持响应

3XX(重定向)

  • 300 Multiple Choices:是一个用来表示重定向的响应状态码,表示该请求拥有多种可能的响应。用户代理或者用户自身应该从中选择一个,表明请求的资源存在多个版本或位置,并且服务器希望客户端根据提供的选项来决定接下来的行为

  • 301 Moved Permanently:永久性重定向,请求的URL已更改,未来所有对此资源的引用应使用新URL

  • 302 Found / 307 Temporary Redirect:临时重定向,请求的资源现在位于不同的URI下,但客户端应当保持使用原有URL

  • 303 See Other:是一个重定向状态码,表示请求已经被处理,客户端应当(并且必须)通过GET方法检索另一个URL来获取请求的结果。这个状态码主要用于POST、PUT等非GET方法的场景中,以符合HTTP/1.1协议关于幂等性操作的要求

    • 当服务器接收到POST请求并成功处理后,如果希望客户端获取一个新的资源地址而不是在当前响应中返回结果,可以使用303状态码,并在响应头部包含Location字段,指示客户端应该访问的新URL。

  • 304 Not Modified:是服务器响应客户端请求时的一种状态,表明客户端缓存的资源与服务器当前的版本一致,并且没有发生更改。因此,服务器不需要重新发送请求的资源内容,而是告知客户端可以继续使用其本地缓存的版本。

  • 308 Permanent Redirect:是一个指示永久重定向的响应状态码,意味着请求的资源已经永久性地移动到了新的URI,并且任何将来对原始URI的请求都应该使用新提供的URI代替

    • 和301 Moved Permanently的主要区别在于它适用于那些不支持方法改变的请求。例如,在执行PUT、POST等非GET请求时,浏览器或客户端在接收到301状态码后可能会自动将请求方法更改为GET并重新发送到新的位置,这并不符合某些场景的需求

4XX(客户端错误)

  • 400 Bad Request:服务器无法理解请求,可能是因为格式错误。

  • 401 Unauthorized:请求未授权,需要提供有效的身份验证凭据。

  • 403 Forbidden:服务器理解请求,但是拒绝执行,通常因为权限问题。

  • 404 Not Found:服务器找不到所请求的资源

  • 405 Method Not Allowed:表明服务器禁止了使用当前 HTTP 方法的请求

  • 406 Not Acceptable:表示客户端错误,实际上,这种错误极少使用。服务器不应使用此错误代码响应,因为它对终端用户来说很难理解和修复,而是忽略相关的标头并向用户提供实际页面。假设即使用户不完全满意,他们也会更喜欢这种情况,而不是错误代码。

  • 407 Proxy Authentication Required:客户端错误,指的是由于缺乏位于浏览器与可以访问所请求资源的服务器之间的代理服务器要求的身份验证凭证,发送的请求尚未得到满足

  • 408 Request Timeout:表示服务器想要将没有在使用的连接关闭。一些服务器会在空闲连接上发送此信息,即便是在客户端没有发送任何请求的情况下

  • 409 Conflict:表示请求与服务器端目标资源的当前状态相冲突,冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应

  • 410 Gone:说明请求的目标资源在原服务器上不存在了,并且是永久性的丢失。如果不清楚是否为永久或临时的丢失,应该使用404

5XX(服务器端错误)

  • 500 Internal Server Error:服务器遇到了意外情况,无法完成请求。

  • 501 Not Implemented:服务器不支持请求的功能。

  • 503 Service Unavailable:服务器当前无法处理请求,可能是因为超载或正在进行维护

  • 504 Gateway Timeout: 是一种 HTTP 协议的服务器端错误状态代码,表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应

  • 505 HTTP Version Not Supported?:是一种 HTTP 协议的服务器端错误状态代码,表示服务器不支持请求所使用的 HTTP 版本

  • 506 Variant Also Negotiates:表示内部服务器配置错误,其中所选变量/变元自身被配置为参与内容协商,因此并不是合适的协商端点

  • 508 Loop Detected:表示服务器中断一个操作,因为它在处理具有“Depth: infinity”的请求时遇到了一个无限循环。508 码表示整个操作失败

  • 511 Network Authentication Required 是一种 HTTP 协议的错误状态代码,表示客户端需要通过验证才能使用该网络

文章来源:https://blog.csdn.net/qq_17496235/article/details/135503794
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。