HTTP响应状态码(404,500……)

----转载,原文链接:https://blog.youkuaiyun.com/weixin_42007999/article/details/105683260

 

 

在使用 HttpRunner 进行接口测试的时候,最常用到的一类断言方式就是判断接口返回的响应状态码,所以这里对各类型的 HTTP 响应状态码进行简要介绍。

 

 

HTTP 状态码(HTTP Status Code):是用以表示服务器对请求进行响应后,表示结果状态的3位数字代码。被置于响应头的第一行(也叫响应行)中。以 Firefox 浏览器自带网络功能抓包为例,在“状态码”一项中可以清晰看到。状态码后面紧跟的是“消息短语”,可以看成对状态码的最精简解释说明。

 

如图,状态码:200, 消息短语:OK,代表此请求的响应是成功完成的。

 

 

HTTP 的响应状态码主要分为五类,分别为从1到5开头的三位数字:

1xx: 代表消息
2xx: 代表成功
3xx: 代表重定向
4xx: 代表客户端错误
5xx: 代表服务器端错误
 

 

在进行接口测试的过程中,我们涉及比较多的有以下几个:

 

1. 200 OK

请求成功,服务器已经正常响应。
注意:返回 200 不一定代表得到的就是我们预期的结果页面,如登录成功打开系统桌面,此时返回200状态码,但是不小心输入了错误的用户名和密码,登录失败仍然回到登录页面,但此时服务器返回响应的状态码还是 200,说明这个过程中服务器已经做完它认为正确的事情,而不是代表业务的正确性。所以在测试的时候,仅仅依靠200这个状态码进行断言是不充分的。
HttpRuner 断言写法: - eq: [status_code, 200]
 

 

2. 301/302/307 永久移动/临时移动/临时重定向

被请求的资源已经不在你请求的URL上了,需要去另外一个URL中获取。
注意:HttpRunner 的内核实际是 requests 模块,而 requests 模块在发送请求的时候,会默认自动完成重定向的操作,此时就无法从重定向前的页面提取数据了。
解决方法,在 request 关键字下增加: allow_redirects: False


 

 

3. 304 未改变

如果浏览器端的缓存文件已经过期,则浏览器自己无法自己决定该文件是否还可以继续使用,此时需要向服务器发送请求来询问。服务器判断此段时间以来,该文件是否被改变过,如果没有改变过,则说明浏览器端的缓存文件依然可以使用,就向浏览器发送 304 消息(只有响应头没有响应体),浏览器收到后直接读取缓存文件内容呈现到页面。当然,如果服务器判断该文件被修改过,会重新向浏览器发送 200 消息(重新传送最新文件)。

 

 

4. 401 未经许可,认证失败

请求失败,请求资源的时候没有通过认证,鉴权失败了。

注意:碰到401基本上属于鉴权的问题,可以在请求头中附加 Authorization 认证信息或者是从前一个页面的响应中提取 cookie/token 等相关内容,再附加到新的请求中去。

 

 

5. 404 未找到

请求失败,请求的资源在服务器上没有找到。

注意:一般发生这种错误,不意味着服务器端代码的错误,往往是由于自己编写的 URL 或者文件名称错误,需要自行检查。

 

 

6. 500 服务器内部错误

服务器无法完成对请求的处理。一般来说,服务器端的源代码出现错误时会出现这个问题。
————————————————
版权声明:本文为优快云博主「捉虫客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_42007999/article/details/105683260

### 微信开发者工具 GET 请求 404 错误解决方案 当在微信开发者工具中遇到 GET 请求返回 404 的错误时,可能的原因有多种。以下是可能导致此问题的因素以及对应的解决方法: #### 1. 路径配置不正确 如果服务器端资源路径设置错误或者客户端请求的 URL 不匹配实际部署的服务地址,则会出现 404 错误。需要仔细核对前后端接口文档中的路径定义。 - **建议操作**: 确认前端发送的 GET 请求 URL 是否与后端服务的实际路由一致[^1]。 ```javascript // 前端代码示例 fetch('https://example.com/api/resource', { method: 'GET', }).then(response => response.json()).catch(error => console.error('Error:', error)); ``` #### 2. 后台未启动或服务不可达 若后台服务尚未运行,或者网络环境阻止了连接到目标主机的情况也会引发该类异常。 - **验证方式**: 使用命令行 ping 或 curl 测试远程 API 地址连通状态;另外也可以通过浏览器直接输入链接观察反馈结果来辅助排查原因所在[^2]。 #### 3. 防盗链保护机制触发 某些情况下,为了防止非法调用者获取受控内容,网站管理员会在程序里加入 Referer 校验逻辑。一旦检测到来自非授权源站发起的数据索取行为即刻拒绝访问并报错码 4xx/5xx 类型之一——这里表现为找不到指定文件位置的现象(实则是人为屏蔽所致)。 - **应对策略**: 修改应用框架内的中间件部分实现更灵活的安全控制措施而非单纯依赖 HTTP 头部信息作为唯一依据判定合法性[^3]。 ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.before_request def before_request(): allowed_domains = ['http://localhost:8080'] # 替换为允许访问的具体域名列表 referrer = request.referrer if referrer and any(domain in referrer for domain in allowed_domains): pass else: return jsonify({"error": "Forbidden"}), 403 if __name__ == '__main__': app.run() ``` --- ### 总结 综上所述,针对微信开发者工具下发生的 GET 方法响应失败现象可以从上述三个方面逐一核查定位根本诱因进而采取相应修正手段消除障碍恢复正常功能运作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值