当前位置: 首页 > Web前端 > HTML

【刘健】HTTP常用状态码

时间:2023-04-02 22:15:16 HTML

HTTP常用状态码作者:刘健(AbbottLiu)创建:2022/03/31更新:2022/03/31HTTP状态码表示客户端HTTP请求的返回结果和标志是否服务器端处理是正常还是发生错误,能够根据返回的状态码判断请求是否被正确处理是非常重要的。状态码由3位数字和一个原因短语组成,如下图所示:数字中的第一位数字指定响应类别,最后两位数字没有分类。响应类别有五种:类别原因短语1xxInformational(信息状态码)acceptedrequestisbeingprocessed2xxSuccess(成功状态码)请求被正常处理3xxRedirection(重定向)需要额外的操作来完成请求4xxClienterror(客户端错误)error)客户端请求错误,服务器无法处理请求5xxServerError(服务器错误)各种类型的服务器处理请求错误的常见状态码:2xx(3种)200OK:表示请求从客户端发送到服务器正常处理并返回;204NoContent:表示客户端向客户端发送的请求已经处理成功,但是返回的响应报文不包含实体主体部分(无法返回任何资源);206PatialContent:表示客户端进行了范围请求,服务器成功执行了这部分GET请求。Content-Range指定实体内容的范围。3xx(5types)301MovedPermanently:永久重定向,表示请求的资源被分配了一个新的URL,然后应该使用改变后的URL;302Found:temporaryredirection,表示请求的资源分配了新的URL,希望本次访问使用新的URL;301和302的区别:前者是永久性的移动,后者是临时性的移动(后面可能会更改URL)303SeeOther:表示请求的资源已经分配了新的URL,应该使用GET获取请求资源的方法;302和303的区别:后者明确表示客户端应该使用GET方法获取资源304NotModified:表示客户端发送附加条件(意思是使用GET方法的请求报文中包含if-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Sinceanyheader)请求,服务器允许访问资源,但如果满足条件则请求返回改变状态代码;307TemporaryRedirect:临时重定向,与303同义。307会遵循浏览器标准,不会从POST变为GET;(不同的浏览器可能有不同的情况);4xx(4种)400BadRequest:表示请求报文中存在语法错误;401Unauthorized:未授权,需要HTTP认证;403Forbidden:服务器拒绝访问(访问权限有问题);404NotFound:表示在服务器上找不到请求的资源。另外,也可以用于服务器拒绝请求但又不想给出拒绝原因的情况;5xx(2types)500InterServerError:表示服务器在执行请求时发生了错误,也可能是web应用的bug或者是一些临时错误;503ServerUnavailable:表示服务器暂时过载或停机维护,无法处理请求;前端性能优化-状态码200和304什么是200和304状态码200:请求已经成功,预计请求的响应头或数据体将随此响应一起返回。即返回的数据是全量数据。如果文件没有被GZIP压缩,文件的大小取决于传输量。状态码304:如果客户端发送一个有条件的GET请求并且请求被允许,但是文档的内容(自上次访问以来或者根据请求的条件)没有改变,服务器应该返回这个状态码。也就是说,客户端和服务器只需要传输少量数据来验证文件。如果文件没有被修改,则不需要返回全量数据。200和304的条件在客户端强制刷新,比如ctrl+f5。这种情况下,所有的缓存策略都失效了,服务器会返回200;在客户端非强制刷新的情况下,比如点击刷新按钮或者按f5,服务端会比较请求头中If-Modified-Since字段的时间和文件的实际修改时间。如果修改时间比If-Modified-Since时间更新,服务端会认为文件已经被修改,发送给客户端返回全量数据,客户端本地缓存失效,状态码为200、如果修改时间早于If-Modified-Since时间,服务端会认为文件没有被修改,只会将文件回写给客户端,不会返回文件数据。客户端使用本地缓存,状态码为304。根据上面和图中所示,状态为304的请求的数据量比状态为200的请求小很多,因为304只需要返回响应头,而不是整个文件,所以只需要几个字节就够了,可以节省大量的网络带宽,减少页面的渲染时间。最后,阅读更多技术文章,请搜索【刘剑全栈技术】