前言

网页开发做久了, 自然而且会接触到许多 status code. 这篇列出一些常见的 status code. 初学者可以把它们学上来. 真的很常见哦.

参考

Wikipedia – List of HTTP status codes

2xx

2xx 的 codes 都属于成功的 request.

200 – OK, 正常返回. 最常见

201 – Created, restful create resource, post 成功后会返回 201, 会附带 created resource 的 url.

204 – No Content,  restful update / delete resource, put / delete 成功后会返回 204

3xx

3xx 的 codes 都表示跳转. 但它不代表 request fail 哦, 只是地址换了, 或者 succeed 后带你去 thank you 页面这种都是 3xx 的范畴.

301 – Moved Permanently, 如果地址永久换了就返回这个 (SEO 很常用)

302 – Found, 如果只是暂时换地址那就用 302 (SEO 很常用)

303 – See Other, 某种情况下取代了 302. 下面会讲细节

304 – Not Modified

比如 client 要下载一个很大的资源, request 的时候就可以问 server If-Modified-Since, server 就明白 client 有缓存, 但担心过期.

如果这时资源没有改动, 那就可以返回 304. 这样 client 就不用重新下载, 直接用缓存即可.

307 – Temporary Redirect, 某种情况下取代了 302, 下面会讲细节

308 – Permanent Redirect, 某种情况下取代了 301, 下面会讲细节

302, 303, 307 和 301, 308 的关系

它们关系密切而且有历史包袱, 所以有点乱.

参考: 知乎 – HTTP 中的 301、302、303、307、308 响应状态码

最早的时候只有 301, 302

1 个 POST request 被返回 302, by right 应该继续用 POST, 但是很多游览器会改成 GET. 这和规范有冲突, 但游览器没有打算改

于是规范就出了 303 和 307 替代 302.

303 表示不管怎样, 返回后用 GET 去拿

307 则要求 client (游览器) 不可以将 POST 换成 GET.

有了 303 和 307 以后, 302 其实就没用了, 但要向后兼容所以也不可能丢掉它, 于是规范就改了

302 就是会把 POST 换成 GET.

301 也是同样的问题, POST 会变成 GET, 308 则不会.

小总结

如果只考虑 GET, 那么用 301, 302 可以了.

如果不在乎 POST 变成 GET, 那么用 301, 302 可以了

如果你想强调 POST 变成 GET, 那么用 303

如果你不想 POST 变成 GET, 那么用 307, 308

4xx

4xx 属于 fail request. 通常是那些预料的到的 error, 而不是 server down 那种完全 unexpected 的.

400 Bad Request, 常用于 validation 不过关的返回, 比如 required 的 property 没有 value. 就可以返回 400.

401 Unauthorized, 没有登录, 无法访问到受保护的资源

403 Forbidden, 登入了, 但是权限不够, 无法访问到受保护的资源.

404 Not Found, 找不到资源. 这个是最常见的了.

405 Method Not Allowed, 某个地址是 handle POST request 的, 结果 client 发了 GET. 我用 Postman 做 Web API 测试时, 经常忘记选 Method, 所以常看到这个 error.

406 Not Acceptable, client request 的时候会在 header 表面能接受的资源返回格式, 如果 server 发现 response 的格式没有在能接受的范围内就会返回 406

408 Request Timeout, server 会 set 一个时间, 如果 request 处理太久就会直接返回 408.

415 Unsupported Media Type, server 不接受 client post 的内容格式, 和 405 有点反过来的味道.

429 Too Many Requests, client 在很短的时候见发了太多的请求. .NET 7 正好出了这样一个限制 feature Youtube – The NEW Rate Limiter of .NET 7 is AWESOME

5xx

5xx 属于 server unexpected error. 通常发生就要找 IT support 看看了.

500 Internal Server Error. 通常是程序有 Bug

503 Service Unavailable, server 完全 down 了

总结

上面都是比较常见的.如果是初学者, 我觉得至少要懂 200, 301, 302, 401, 403, 404, 500, 503.

常见的 HTTP Status Codes的更多相关文章

  1. HTTP 状态码总结 (HTTP Status Codes)

    今天与同事聊天中提及到HTTP状态码的问题,突然发现工作这么些年对这个天天打交道的东西也没有一个详细的了解.日常最常见的状态码莫过于500和404了,几乎从事IT的应该都知道或许不从事的都知道,呵呵! ...

  2. HTTP常见返回代码(HTTP Status codes)的分类和含义

    HTTP错误主要分成三类:用户设备问题.Web服务器问题和连接问题.当客户端向Web服务器发送一个HTTP请求时,服务器都会返回一个响应代码.而这些响应代码主要分成五类. HTTP状态码中定义了5大类 ...

  3. HTTP状态码(HTTP Status codes)简介

    HTTP可能大家都熟悉,就是超文本传输协议.浏览器通过HTTP与WEB Server通讯(也有一些其它软件比如IM使用HTTP协议传递数据),把我们的请求(HTTP Request)传递给服务器,服务 ...

  4. Http 状态码(Status Codes)

    七.状态码(Status Codes)*服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词).200 OK - [GET]:服务器成功返回用户请求的数据,该操作 ...

  5. IIS SMTP status codes

    Here are the meaning of SMTP status codes. Status Code Description 211 System status, or system help ...

  6. 常见的XMLHttpRequest.status状态码

    XMLHttpRequest.status状态码 1xx-信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应. 100-继续. 101-切换协议. 2xx- ...

  7. [zt]OJ常见的Judge Status

    Queuing : 提交太多了,OJ无法在第一时间给所有提交以评判结果,后面提交的程序将暂时处于排队状态等待OJ的评判.不过这个过程一般不会很长. Compiling : 您提交的代码正在被编译. R ...

  8. springboot - 映射HTTP Response Status Codes 到 FreeMarker Error页面

    1.总览 2.代码 1).pom.xml 这里注意:springboot 2.2.0以后默认的freemarker文件后缀为:ftlh.本例用的是2.2.1,所以后缀为ftlh <depende ...

  9. springboot - 映射HTTP Response Status Codes 到 静态 HTML页面

    1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...

  10. springboot - 映射 HTTP Response Status Codes 到自定义 JSP Error 页面

    1.总览 2.代码 1).pom.xml <dependencies> <dependency> <groupId>org.springframework.boot ...

随机推荐

  1. 拯救SQL Server数据库事务日志文件损坏的终极大招

    拯救SQL Server数据库事务日志文件损坏的终极大招 在数据库的日常管理中,我们不可避免的会遇到服务器突然断电(没有进行电源冗余),服务器故障或者 SQL Server 服务突然停掉, 头大的是l ...

  2. 基于微信小程序+Springboot校园二手商城系统设计和实现

    \n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 一. 前言介绍: 在当今社会的高速发展过程中,产生的劳动力越来越大,提高人们的生活水平和质 ...

  3. 前端太卷了,不玩了,写写node.js全栈涨工资,赶紧学起来吧!!!!!

    首先聊下node.js的优缺点和应用场景 Node.js的优点和应用场景 Node.js作为后端开发的选择具有许多优点,以下是其中一些: 高性能: Node.js采用了事件驱动.非阻塞I/O模型,使得 ...

  4. CRC 循环冗余效验

    CRC循环冗余效验 利用多项式 x6 + x4 + x3,实际为使用模2除法来做的加密 常用crc多项式有 名称 生成多项式 数值式 简记式 标准引用 CRC-4 x4+x+1 0x1'3 0x3 I ...

  5. CCF 命令行选项

    题目原文 问题描述(题目链接登陆账号有问题,要从这个链接登陆,然后点击"模拟考试",进去找本题目)   试题编号: 201403-3 试题名称: 命令行选项 时间限制: 1.0s ...

  6. Segment-anything学习到微调系列_SAM初步了解

    Segment-anything学习到微调系列_SAM初步了解 前言 本系列文章是博主在工作中使用SAM模型时的学习笔记,包含三部分: SAM初步理解,简单介绍模型框架,不涉及细节和代码 SAM细节理 ...

  7. IPython notebook(Jupyter notebook)指定IP和端口运行

    1.  使用conda  安装  jupyter conda install jupyter 2. 在服务器端不打开浏览器,指定 端口, IP ,  运行jupyter notebook 这里假设端口 ...

  8. 从baselines库的common/vec_env/vec_normalize.py看reinforcement learning算法中的reward shape方法

    参考前文:https://www.cnblogs.com/devilmaycry812839668/p/15889282.html 2.  REINFORCE算法实际代码中为什么会对一个episode ...

  9. 推荐一款界面优雅、功能强大的 .NET + Vue 权限管理系统

    前言 今天推荐一款用 .NET 和 Vue3 实现的开源权限管理系统.它的界面清爽干净,功能强大,还具备灵活的角色权限分配功能,能够满足不同规模企业的管理需求.无论你是开发新手还是大神,都能轻松上手, ...

  10. "揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计"

    Centoschina 项目要求 爬取centoschina_cn的所有问题,包括文章标题和内容 数据库表设计 库表设计: 数据展示: 项目亮点 低耦合,高内聚. 爬虫专有settings custo ...