共计 1943 个字符,预计需要花费 5 分钟才能阅读完成。
HTTP 常见的状态码
Author: 刘建 (Abbott Liu)
Create: 2022/03/31
Update: 2022/03/31
HTTP 状态码示意客户端 HTTP 申请的返回后果、标记服务器端的解决是否失常或者是呈现的谬误,可能依据返回的状态码判断申请是否失去正确的解决很重要。
状态码由 3 位数字和起因短语组成,例如下图所示:
数字中的第一位指定了响应类别,后两位无分类,响应类别有一下 5 种:
类别 | 起因短语 | |
---|---|---|
1xx | Informational(信息性状态码) | 承受的申请正在解决 |
2xx | Success(胜利状态码) | 申请失常处理完毕 |
3xx | Redirection(重定向) | 须要进行附加操作以实现申请 |
4xx | Client error(客户端谬误) | 客户端申请出错,服务器无奈解决申请 |
5xx | Server Error(服务器谬误) | 服务器解决申请出错 |
各类别常见状态码:
2xx(3 种)
200 OK:示意从客户端发送给服务器的申请被失常解决并返回;
204 No Content:示意客户端发送给客户端的申请失去了胜利解决,但在返回的响应报文中不含实体的主体局部(没有资源能够返回);
206 Patial Content:示意客户端进行了范畴申请,并且服务器胜利执行了这部分的 GET 申请,响应报文中蕴含由 Content-Range 指定范畴的实体内容。
3xx(5 种)
301 Moved Permanently:永久性重定向,示意申请的资源被调配了新的 URL,之后应应用更改的 URL;
302 Found:临时性重定向,示意申请的资源被调配了新的 URL,心愿本次拜访应用新的 URL;
301 与 302 的区别:前者是永恒挪动,后者是长期挪动(之后可能还会更改 URL)
303 See Other:示意申请的资源被调配了新的 URL,应应用 GET 办法定向获取申请的资源;
302 与 303 的区别:后者明确示意客户端该当采纳 GET 形式获取资源
304 Not Modified:示意客户端发送附带条件(是指采纳 GET 办法的申请报文中蕴含 if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since 中任一首部)的申请时,服务器端容许拜访资源,然而申请为满足条件的状况下返回改状态码;
307 Temporary Redirect:长期重定向,与 303 有着雷同的含意,307 会遵循浏览器规范不会从 POST 变成 GET;(不同浏览器可能会呈现不同的状况);
4xx(4 种)
400 Bad Request:示意申请报文中存在语法错误;
401 Unauthorized:未经许可,须要通过 HTTP 认证;
403 Forbidden:服务器回绝该次访问(拜访权限呈现问题)
404 Not Found:示意服务器上无奈找到申请的资源,除此之外,也能够在服务器拒绝请求但不想给回绝起因时应用;
5xx(2 种)
500 Inter Server Error:示意服务器在执行申请时产生了谬误,也有可能是 web 利用存在的 bug 或某些长期的谬误时;
503 Server Unavailable:示意服务器临时处于超负载或正在进行停机保护,无奈解决申请;
前端性能优化 - 状态码 200 和 304
什么是 200 和 304
状态码 200:申请已胜利,申请所心愿的响应头或数据体将随此响应返回。即返回的数据为全量的数据,如果文件不通过 GZIP 压缩的话,文件是多大,则要有多大传输量。
状态码 304:如果客户端发送了一个带条件的 GET 申请且该申请已被容许,而文档的内容(自上次访问以来或者依据申请的条件)并没有扭转,则服务器该当返回这个状态码。即客户端和服务器端只须要传输很少的数据量来做文件的校验,如果文件没有批改过,则不须要返回全量的数据。
200 和 304 产生的条件
在客户端强制刷新,如 ctrl+f5 这种状况下,所有的缓存策略生效,服务器端都会返回 200;在客户端非强制刷新,如点击刷新按钮或按 f5 的状况下,服务器端会依据 request 头中:If-Modified-Since 字段的工夫与文件的理论批改工夫进行比拟,
如果批改工夫比 If-Modified-Since 工夫要新,则服务器会认为文件曾经批改过了,向客户端返回全量的数据,客户端本地的缓存生效,状态码为 200。
如果批改工夫比 If-Modified-Since 工夫要旧,则服务器会认为文件并未批改过,并且只会向客户端写回头文件,不返回文件数据,客户端应用本地缓存,状态码为 304。
根据上述以及图中所示,状态为 304 的申请要比状态为 200 的申请的数据量小很多,因为 304 只须要返回响应头,并不需要返回整个文件,所以只须要几字节就能够了,这样可能节俭大量的网络带宽,并缩小了页面的渲染工夫。
最初
看更多技术文章,请搜寻【刘建全栈技术】