当前位置: 首页 > news >正文

【Bug】httpClient循环调用除首次外会报Forbidden postman上用同样的参数可以

文章目录

    • 问题
    • 问题代码
    • 原因
    • 解决
    • 处理Bug的具体步骤

问题

httpClient循环调用除首次外会报Forbidden postman上用同样的参数可以

问题代码

出问题的是一个外部系统的登录接口的调用

        var response = _httpClient.PostAsync($"/prod-api/openauth/login", content).Result;

原因

postman默认请求头比较规范。由于httpClient在同一个服务实例中是同一个, _httpClient再其它地方调用的时候更改了请求头

        _httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", $"Bearer {UserTokenResponse.Data.Token}");

解决

去除掉不需要的请求头

        if (_httpClient.DefaultRequestHeaders.Contains("Authorization"))//调用PostAsync设置的Authorization这里会报错{_httpClient.DefaultRequestHeaders.Remove("Authorization");}

当您提到使用 httpClient 循环调用某个接口时,除了首次调用之外都报 Forbidden 错误,而使用 Postman 进行相同的请求却能够成功,这通常意味着问题可能出在客户端的 httpClient 实现或者请求的某些细节上。以下是一些排查和解决问题的步骤:

  1. 检查请求头

    • 确保 httpClient 在每次请求时都发送了正确的请求头,包括 Content-TypeAuthorization(如果需要的话)等。
    • Postman 会自动保存请求头,但在 httpClient 中,您可能需要显式地设置它们。
  2. 检查请求体

    • 如果请求包含请求体,确保每次循环都正确地设置了请求体,并且没有因为之前的请求而被污染。
  3. 检查 URL 和参数

    • 确保 URL 和所有查询参数在每次请求中都是正确的。
    • 如果 URL 或参数中包含动态生成的部分,请确保这些部分在每次循环中都是预期的。
  4. 检查认证信息

    • 如果接口需要认证(如 JWT、OAuth 等),请确保认证信息(如 token)在每次请求中都是有效的,并且没有过期。
    • 如果认证信息是基于请求的(如每次请求都需要一个新的 token),请确保在每次循环中都生成了新的认证信息。
  5. 检查请求频率和限制

    • 如果接口有限制请求频率(如每秒、每分钟或每天的最大请求数),请确保您的循环调用没有超出这些限制。
    • 如果超出限制,服务器可能会返回 Forbidden 或其他错误。
  6. 检查 IP 地址或用户代理限制

    • 有些服务器可能会基于 IP 地址或用户代理来限制请求。
    • 如果您的 httpClient 和 Postman 使用的是不同的 IP 地址或用户代理,这可能是一个问题。
  7. 查看日志和错误消息

    • 查看服务器的日志以获取更多关于为什么请求被拒绝的详细信息。
    • 确保 httpClient 的错误处理机制能够捕获并显示所有相关的错误消息。
  8. 使用相同的库和版本

    • 确保您的 httpClient 实现与 Postman 使用的 HTTP 库或工具链相似或相同。
    • 有时,不同的库或版本之间可能存在细微的差异,这些差异可能会导致请求被服务器拒绝。
  9. 测试网络环境

    • 尝试在不同的网络环境(如不同的 Wi-Fi、VPN 或代理)下运行您的 httpClient 调用,以排除网络问题。
  10. 简化问题

    • 尝试将问题简化为最基本的请求,只包含必要的请求头和参数。
    • 一旦您能够成功地发送简化后的请求,再逐步添加其他部分,直到您找到问题的根源。

处理Bug的具体步骤

  1. 重现BUG
  2. 确定发生BUG的过程时都做了哪些动作
  3. 桌面检查:把自己的脑子作为CPU,运行从开始操作到出现BUG的操作、处理的数据,分析出现问题的原因
  4. 调试:确定问题出现的原因
  5. 确定解决方案
  6. 修复BUG
  7. 回归测试:确定已BUG已修复并没引入新问题

没有粉丝,没有评论,甚至连读者都没有。因为自己写的烂,因为自己水平有限,所以自己的作品一经发出就石沉大海了,得不到任何的回信,就好像自己写的东西是给自己看的。自己的作品怎么看都好像不够完美,全身的毛病,所以读者不喜欢也很正常对吧!

其实最让我开心的是有些读者们夸我文笔不错,或许是有人第一次这样夸我的缘故吧!又或许是我写的东西没什么人认可,我感受到了一种前所未有的激动,对于未来的憧憬,对自己写下去的动力。

因为有你们,我的写作之路才不孤独,因为有你们,我才能坚持到现在,如果有一天我真的写出圈了,或许我们可以整个交流会之类的,到时候促膝长谈。

“书山有路勤为径,学海无涯苦作舟。”写作苦是苦了点,整得我差点就想放弃了,不过还好有你们。我也不急着成功,因为没有个几十年如一日的坚持,哪能轻易成功?

茫茫文海无人意,天下有君识吾心。文海很孤独,但是有诸君,便足以令我至千里。

相关文章:

  • 微信小程序基础工作模板
  • 网络安全实战基础——实战工具与攻防环境介绍
  • 小阿轩yx-iptables 防火墙
  • JUC并发编程第十章——Java对象内存布局和对象头
  • bpmn+vue 中文文档
  • Javaweb---HTTPS
  • 笔记:Mysql的安全策略
  • Meta Llama 3 RMSNorm(Root Mean Square Layer Normalization)
  • [每周一更]-(第100期):介绍 goctl自动生成代码
  • 【归档】git使用
  • HCIA-RS实验-单臂配置
  • 小米路由器如何设置去广告功能,如何设置小米路由器的自定义Hosts(小米路由器如何去除小米广告、去除小米电视盒子开屏广告、视频广告)
  • 基于深度学习的在线选修课程推荐系统
  • 【六袆 - Java】Java 驱动连接Oracle数据库; Java单元测试 连接Oracle;
  • springcloud第4季 springcloud-gateway网关filter案例场景
  • 230. Kth Smallest Element in a BST
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Fastjson的基本使用方法大全
  • gulp 教程
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • js数组之filter
  • magento2项目上线注意事项
  • mysql常用命令汇总
  • Python_网络编程
  • React as a UI Runtime(五、列表)
  • Redis在Web项目中的应用与实践
  • 阿里云应用高可用服务公测发布
  • 创建一种深思熟虑的文化
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 三分钟教你同步 Visual Studio Code 设置
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 实现菜单下拉伸展折叠效果demo
  • 网页视频流m3u8/ts视频下载
  • ​补​充​经​纬​恒​润​一​面​
  • #APPINVENTOR学习记录
  • #图像处理
  • (10)STL算法之搜索(二) 二分查找
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (6)STL算法之转换
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (四)模仿学习-完成后台管理页面查询
  • (五)activiti-modeler 编辑器初步优化
  • .Net 6.0--通用帮助类--FileHelper
  • .NET MVC第三章、三种传值方式
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .sys文件乱码_python vscode输出乱码
  • [ Linux ] Linux信号概述 信号的产生
  • [ 转载 ] SharePoint 资料
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性