响应状态码 一、状态码大类 状态码分类 说明 1xx 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它 2xx 成功——表示请求已经被成功接收,处理已完成 3xx 4xx 客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等 5xx 服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP 版本不支持等 状态码大全:https://cloud.tencent.com/developer/chapter/13553 二、常见的响应状态码 状态码 英文描述 解释 200 OK 客户端请求成功 ,即处理成功,这是我们最想看到的状态码 302 Found 指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面 304 Not Modified 告诉客户端, 服务器出异常了,赶紧看日志去吧 503 Service Unavailable 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好 511 Network Authentication Required
http响应码简介 1 返回401 一般生产环境出现这个问题,是由于没有通过接口的登录认证。 就会出现返回码是401的情况。 2 返回403 如果生产环境请求某个接口,返回码是403,则说明目前没有访问资源的权限。 这种场景跟返回码是401有区别。 如果没有通知所有的接口调用方,都可能会出现请求接口返回码为404的情况。 还有一种可能也会导致请求接口报404的问题,接口地址之前注册到了API网关中,但API网关的配置出现了问题。 5 返回500 如果请求的接口,返回码为500,一般是出现了服务的内部错误。 一般网关层会对接口的返回值做一次封装,不会返回真正的异常信息。 我们只能查看接口的错误日志,来定位和排查问题。 建议出现异常时,把接口请求参数打印出来,方便后面复现问题。 导致这种问题的原因有很多,我们只能根据服务器上的错误日志,和相关的业务代码逐一排查。
403 Forbidden.服务器已经理解请求,但是拒绝执行它 404 Not Found.请求失败,请求所希望得到的资源未在服务器上发现. 404这个状态码被广泛应用于当服务器不想揭示为何请求被拒绝 ,或者没有其他适合的响应可⽤的情况下. 500 Internal Server Error.服务器遇到某个未曾预料的状况,导致它无法完成对请求的处理. 一般来说,这个问题都会在服务器的程序码出错时出现. 502 Bad Gateway.作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应. 503 Service Unavailable .由于临时的服务器维护或过载,服务器当前无法处理请求.这个状况是临时的, 并且将在一段时间以后恢复.503状态码的存在并不意味着服务器在过载的时候必须使用它. . 504 Gateway Timeout作为网关或代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器, 例如HTTP,FTP,LDAP)或辅助服务器(例如DNS)收到响应
以HTTP状态码为例,为了更加清晰的表述和区分状态码的含义,HTTP状态做了分段。 比如200->请求成功, 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,或者代码执行出错 通过状态码即可初步判断问题原因,HTTP状态的设计思路值得借鉴。 三、参数约定 虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂 字段 类型 说明 code int 返回码 message string 返回码说明 参考HTTP状态码的思路 ,我们对错误码进行分段 返回码值 说明 0 成功 99999 系统发生未知异常 10000-19999 参数校验错误 20000-29999 A步骤执行失败 30000-39999 B步骤执行失败 通过这样的设计 我们可以根据单位时间内99999的数量来做API的异常告警 我们可以根据Code的返回饼图,帮助我们发现系统、业务流程中的问题 等等 ---- 总之,好的返回码设计,可以帮助我们提高沟通效率,降低代码的维护成本
API返回码的设计还是要认真对待,毕竟好的返回码设计可以降低沟通成本以及程序的维护成本。 —2— HTTP 状态码 以HTTP状态码为例,为了更加清晰的表述和区分状态码的含义,HTTP状态做了分段。 对于后端开发来说,我们通常见到的都是: 2XX状态码,比如200->请求成功。 5XX状态码,比如502->服务器异常,通常就是服务没正常运行,或者代码执行出错。 通过状态码即可初步判断问题原因,HTTP状态的设计思路值得借鉴。 —3— 参数约定 虽说是返回码设计,但是只有code是不行的,还要有对应的message,让人可以看懂。 参考HTTP状态码的思路,我们对错误码进行分段。 我们可以根据单位时间内99999的数量来做API的异常告警。 我们可以根据Code的返回饼图,帮助我们发现系统、业务流程中的问题。
EdgeOne 响应的异常状态码分为以下几类:标准状态码您可以参考 HTTP 状态码标准 来查看具体的状态码含义,这类状态码通常在以下情况下响应:请求回源后,由源站响应的状态码信息,节点将透传源站响应的状态码返回给客户端 由 EdgeOne 节点直接响应,例如:Token 鉴权不通过,响应 403 状态码。 416range 范围异常,如 rangeStart < 0、rangeStart > rangeEnd、rangeStart > FileSize。 如下为 EdgeOne 自定义的异常状态码以及含义说明,方便您在业务访问异常时进行自助排障。 522节点请求到源站,在 TCP 建连阶段,源站一直没有响应导致节点超时,则节点响应客户端 522 状态码。
406 Not Acceptable 服务器生成的响应无法被客户端所接受。 服务器从上游服务器收到一个无效的响应。 502.1 CGI 应用程序超时。 502.2 CGI 应用程序出错。 503 Service Unavailable 请求未完成。服务器临时过载或当机。
1.各种状态码设置 https://blog.csdn.net/daichangxia/article/details/78139324 2.设置状态码 通过HttpServletResponse的方法进行返回相应的状态码 ,方法有如下: public void setStatus ( int statusCode ) 该方法设置一个任意的状态码。 setStatus 方法接受一个 int(状态码)作为参数。如果您的反应包含了一个特殊的状态码和文档,请确保在使用 PrintWriter 实际返回任何内容之前调用 setStatus。 public void sendRedirect(String url) 该方法生成一个 302 响应,连同一个带有新文档 URL 的 Location 头。 注意一下,当使用response的setStatus(int sc)方法发送404状态码时,不起任何作用。
HttpCode 浏览器向服务器请求时,服务器响应的消息头里面有状态码,表示请求结果的状态 分类 1XX:收到请求,需要请求者继续执行操作,比较少用 2XX:请求成功,常用200 3XX:重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的 URL地址,这个地址可以从响应的Location首部中获取: 好处:网站改版、域名迁移、多个域名指向同个主站导流 常用: 301:永久性跳转,比如域名过期,换个域名 302:临时性跳转 4XX:客户端出错
响应状态码 9. 在 HTTP 协议中,你将发送 3 位数的数字状态码作为响应的一部分。 100 及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码的响应不能带有响应体。 200 及以上状态码用于「成功」响应。这些是你最常使用的。 此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。 300 及以上状态码用于「重定向」。 具有这些状态码的响应可能有或者可能没有响应体,但 304「未修改」是个例外,该响应不得含有响应体。 400 及以上状态码用于「客户端错误」响应。这些可能是你第二常使用的类型。
HTTP 状态代码或响应码共分为五类,分别是 1×× 提示信息,2×× 成功,3×× 重定向,4×× 客户端错误,5×× 服务器错误。 本文包含了完整的 HTTP 状态码以及相应的描述信息。 当我们进行 API 测试时,通常首先会检查 API 调用返回的响应的状态码。这就要求我们必须熟悉那些最常见的 HTTP 状态码,以便我们能够更快地识别问题。 1×× 提示信息类状态码 1xx 提示信息类状态代码表示在完成请求的动作并发送最终响应之前,用于表示通信连接状态或请求进度的临时响应。 100 继续 101 交换协议中 102 处理中 2×× 请求成功响应状态码 2xx(Successful)类状态代码表示客户端的请求已被成功接收、理解和接受。 200-正常,状态代码表示请求已成功。 204-无内容,状态代码指示服务器已成功完成请求,并且在响应有效载荷主体中没有要发送的附加内容。
HTTP请求状态码汇总,加粗的比较常见: httpStatusCodes : 100: "Continue", 101: "Switching Protocols", 200: "OK", 201:
HTTP状态码(HTTP Status Code)是一种表示网页服务器响应状态的三位数字编码。通过这些数字,可以简化状态的表达。状态码有十种,其中首位数字为1-5。根据这5个数字,状态码可以分为5类。 这两个状态码都关系到能否获取重要的信息。当用户第一次请求服务器资源,服务器成功返回资源,这是状态码为200。所以,状态码为200的数据包往往包含用户从服务器获取的数据。 服务器会判断修改时间,如果没有修改过,就会返回状态码304,告诉客户端该资源依然有效,客户端会直接使用缓存中的资源。针对304响应,渗透人员可以分析对应的请求包,获取资源路径。
(二)HTTP响应状态行包括HTTP协议版本、状态码和原因短语。例如,“HTTP/1.1 200 OK”。状态码1xx(信息性状态码):表示请求已被接收,继续处理。 2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。200 OK:请求成功,服务器返回了请求的资源。201 Created:请求成功,并且服务器创建了新的资源。 204 No Content:请求成功,但响应体为空。3xx(重定向状态码):表示需要后续操作才能完成请求。 4xx(客户端错误状态码):表示客户端可能发生了错误,妨碍了服务器的处理。400 Bad Request:请求语法有误,服务器无法理解。401 Unauthorized:请求未授权,需要身份验证。 5xx(服务器错误状态码):表示服务器在处理请求的过程中发生了错误。500 Internal Server Error:服务器内部错误,无法完成请求。
前言 我们之前分享的是是请求模型,请求参数,这次呢,我们看下响应状态码相对应的。 在以下任意的接口路径中使用 status_code 参数来声明用于响应的 HTTP 状态码: @app.get() @app.post() @app.put() @app.delete() 我们可以简单的看下 100 及以上状态码用于「消息」响应。你很少直接使用它们。具有这些状态代码的响应不能带有响应体。 200 及以上状态码用于「成功」响应。这些是你最常使用的。 此响应在没有内容返回给客户端时使用,因此该响应不能包含响应体。 300 及以上状态码用于「重定向」。具有这些状态码的响应可能有或者可能没有响应体,但 304「未修改」是个例外,该响应不得含有响应体。 400 及以上状态码用于「客户端错误」响应。这些可能是你第二常使用的类型。 一个例子是 404,用于「未找到」响应。 对于来自客户端的一般错误,你可以只使用 400。
验证码响应结果分析 首先从前端开始进行分析,进入到登录页面,打开开发者工具(f12),找到 network,f5 刷新一下页面,然后,筛选一下,筛选内容为 Fetch/XHR: 你会发现列表中有两项内容 ,我们只需要查看 captchaImage 即可,从名字就可以看出是验证码图片的意思,然后我们查看这个响应结果是什么,响应结果内容如下: { "msg": "操作成功", "img": (); 如果为 false 直接返回响应结果,则前端没有验证码需要进行填写。 () { // 创建一个 AjaxResult 这个是用于返回响应结果是实体类对象 AjaxResult ajax = AjaxResult.success(); // 查看验证码的配置是否开启了验证码 boolean captchaEnabled = configService.selectCaptchaEnabled(); // 将标志写入到响应结果中 ajax.put("
6.另外,HTTP请求报文和响应报文都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。 软件测试人员了解一些服务器返回的HTTP状态的意思是必不可少的,只有弄清楚这些状态码,工作中才会得心应手,HTTP状态码如下: HTTP响应状态码: 状态代码由三位数字组成,第一个数字定义了响应的类别, 常用状态码: 1xx - 信息提示 这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx 响应。 许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时 才能重定向。 服务器必须包含有关响应中所发生的冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,同时会提供两个请求的差异列表。
python requests检测响应状态码 1、为了方便引用,Requests附有一个内置的状态码查询对象。 >>> r.status_code == requests.codes.ok True 2、如果发送失败请求(非200响应),我们可以通过Response.raise_for_status()抛出异常。 raise_for_status raise http_error requests.exceptions.HTTPError: 404 Client Error 以上就是python requests检测响应状态码的方法
前言 和指定响应模型一样,可以在任何路径操作中添加参数 status_code,用于声明响应的 HTTP 状态码 @app.get() @app.post() @app.put() @app.delete True) 重点 status_code 接收一个带有 HTTP 状态代码的 number status_code 也可以接收一个 IntEnum 如果是 number,可以使用 ,里面都是封装好的状态码变量 status.HTTP_201_CREATED) async def create_item(name: str): return {"name": name} 更推荐用这个,因为变量名会包含状态码+ status_code=HTTPStatus.CREATED) async def create_item(name: str): return {"name": name} status_code 的作用 在响应中返回该状态代码
TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。 PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。 MOVE: 请求服务器将指定的页面移至另一个网络地址。 HTTP响应状态码: ① 客户方错误 100 继续 101 交换协议 ② 成功 200 OK 201 已创建 202 接收 203 非认证信息 204 无内容 205 重置内容 206