http请求头导致了dial tcp:lookup xxxx on 10.43.0.10:53 no sunch host

事实证明人有的时候也不能太偷懒,太偷懒容易给自己埋坑。

问题的背景:

web端调用服务A,服务A异步调用服务B。服务A有四个场景需要调用服务B,所以,服务A中封装了一个公用的方法,唯一的区别是,场景不同时,发给服务B的body不相同,web端通过四个接口调用服务A,服务A组装body信息再调用服务B,只有一种场景报了下面的错误,这个错误看着像是域名解析的问题。但是,理论上不应该存在域名解析的错误,因为,从程序的逻辑看,因为调用B服务的方法是公用的,只有body不一样。

问题定位过程:

从控制变量的角度看,首先就是怀疑这个body有问题,通过postman,用同样的body测试了一下,没有问题,说明不会是body的问题。

只能考虑其他的问题。在web页面调用,然后把curl拷贝出来,直接导入postman测试。这种情况下,postman调用没有出问题。

比对了一下,web端调用的http请求的header和postman调用的http请求的header(虽然是复制过来的,但是,实际请求头还是发生了变化,postman做了处理)。

两者的User-Agent头不一样。

由此,可以推测,因为header导致了这个问题。

解决方案:

有了上面的推测,只要简单验证一下就可以了。由于原来的链路中,服务A请求服务B的过程中,header是直接复制了web端请求服务A时的header,所以,导致了这个问题。

所以,去掉这个复制header的操作,改为按照实际需求传header。

func SendRequest(ctx *gin.Context, url string, reqBody map[string]interface{}, header map[string]string) (string, error) {var err errorreq := &http.Request{}defer func() {if err != nil {global.GIN_LOG.ErrorWithContext(ctx, err)}}()//map转bytereqBodyByte, err := json.Marshal(reqBody)if err != nil {return "", err}global.GIN_LOG.InfoWithContext(ctx, fmt.Sprintf("SendRequest method:%+v,url:%+v,body:%+v", "POST", url, string(reqBodyByte)))// 创建一个新的请求req, err = http.NewRequest("POST", url, strings.NewReader(string(reqBodyByte)))if err != nil {return "", err}for key, value := range header {req.Header.Set(key, value)}client := &http.Client{}resp, err := client.Do(req)if err != nil {return "", err}defer resp.Body.Close()body, err := io.ReadAll(resp.Body)if err != nil {return "", err}global.GIN_LOG.InfoWithContext(ctx, fmt.Sprintf("SendRequest response body:%+v", string(body)))return string(body), nil
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 控制台中文乱码 4 种解决方案

前言 IntelliJ IDEA 如果不进行相关设置,可能会导致控制台中文乱码、配置文件中文乱码等问题,非常影响编码过程中进行问题追踪。本文总结了 IDEA 中常见的中文乱码解决方法,希望能够帮助到大家。 IDEA 中文乱码 解决方案 一、设置字体为支…

手机银行客户端框架之mPaaS介绍

移动开发平台(Mobile PaaS,简称 mPaaS)是源于支付宝 App 的移动开发平台,为移动开发、测试、运营及运维提供云到端的一站式解决方案,能有效降低技术门槛、减少研发成本、提升开发效率,协助企业快速搭建稳定…

H. GCD is Greater

H. GCD is Greater 题意 给定一个长度为 n n n的数组 a a a,先手选择 [ 2 , n − 2 ] [2,n-2] [2,n−2]个数并计算所选择数的gcd,后手选择剩下的数,并计算剩下所有的数按位与的结果,再加上给定的 x x x,如果先手的结果…

Docker Redis Debian服务器版

1.使用官方安装脚本自动安装docker 安装命令如下: curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.sh 如果安装提示 -bash sudo command not found 则需要 #update sudo apt-get update sudo apt-get install sudo再执行安装脚本1 安装…

c++中常用库函数

大小写转换 islower/isupper函数 char ch1 A; char ch2 b;//使用islower函数判断字符是否为小写字母 if(islower(ch1)){cout << ch1 << "is a lowercase letter." << end1; } else{cout << ch1 << "is not a lowercase lette…

上采样-Lanczos插值

Lanczos插值是一种高级的上采样方法&#xff0c;它在计算目标图像中每个像素的值时&#xff0c;利用了周围像素的信息&#xff0c;并通过Lanczos滤波器进行插值计算&#xff0c;以产生较为清晰的结果。下面通过图文并茂的方式详细描述Lanczos插值方法的实现过程。 现在我们想将…

IntelliJ IDEA(WebStorm、PyCharm、DataGrip等)设置中英文等宽字体,英文为中文的一半(包括标点符号)

1.设置前&#xff08;idea默认字体为 JetBrains Mono&#xff09; 2.设置后&#xff08;楷体&#xff09;

计算机网络常见面试总结

文章目录 1. 计算机网络基础1.1 网络分层模型1. OSI 七层模型是什么&#xff1f;每一层的作用是什么&#xff1f;2.TCP/IP 四层模型是什么&#xff1f;每一层的作用是什么&#xff1f;3. 为什么网络要分层&#xff1f; 1.2 常见网络协议1. 应用层有哪些常见的协议&#xff1f;2…

三种语言实现spark createDataFrame

前言 我们经常需要在本地用数组写一些测试数据,进行spark逻辑测试,需要借助StructType和StructField以及数组生成DataFrame,最终进行测试,这里就简单的用Java、Scala、Python三种语言实现用数组的数据创建DataFrame。 了解StructType和StructField StructType spark stru…

systemctl start docker报错(code=exited, status=1/FAILURE)

运行systemctl start docker报错内容如下: 输入systemctl status docker.service显示以下内容&#xff1a; 本次启动不起来与docker服务无关 具体解决问题是修改 /etc/docker/daemon.json&#xff0c;vim /etc/docker/daemon.json # 添加如下内容 {"registry-mirrors&qu…

ccf201509-3模板生成系统(list,map,字符串综合运用)

问题描述 成成最近在搭建一个网站&#xff0c;其中一些页面的部分内容来自数据库中不同的数据记录&#xff0c;但是页面的基本结构是相同的。例如&#xff0c;对于展示用户信息的页面&#xff0c;当用户为 Tom 时&#xff0c;网页的源代码是&#xff1a; 而当用户为 Jerry 时…

华为OD-C卷-分披萨[100分]

题目描述 "吃货"和"馋嘴"两人到披萨店点了一份铁盘(圆形)披萨,并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同奇数块,且肉眼能分辨出大小。 由于两人都想吃到最多的披萨,他们商量了一个他们认…

使用htmlentities()和nl2br()将文本数据正确显示到前台

问题&#xff1a; 在后台textarea里编辑了有一串字符串&#xff0c;虽然在textarea里编辑是有换行效果的&#xff0c;但是数据获取到就只是\n&#xff0c;前端是不认识这个的&#xff0c;正确输出到前台的换行只能是<br/>。 $str "ABCDEFGHIJKLMNOPQ"; echo…

网络安全之反弹Shell

网络安全之反弹Shell 在网络安全和渗透测试领域&#xff0c;“正向Shell”&#xff08;Forward Shell&#xff09;和"反向Shell"&#xff08;Reverse Shell&#xff09;是两种常用的技术手段&#xff0c;用于建立远程访问目标计算机的会话。这两种技术都可以让攻击者…

Golang | Leetcode Golang题解之第22题括号生成

题目&#xff1a; 题解&#xff1a; var res []stringfunc generateParenthesis(n int) []string {res make([]string, 0)dfs(n, 0, 0, "")return res }func dfs(n int, lc int, rc int, path string) {if lc n && rc n {res append(res, path)return }…

2024-Java-Maven学习笔记

Maven Maven是一个Java项目管理和构建工具&#xff0c;作用&#xff1a;定义&#xff08;规范&#xff09;项目结构、项目依赖、使用统一的方式自动化构建&#xff08;clean、compile&#xff09;。 提供了一套依赖管理机制&#xff1a;利用仓库统一管理jar包&#xff0c;利用…

阿里云(国内)安装nvm

更多文章&#xff0c;访问&#xff1a;阿里云&#xff08;国内&#xff09;安装nvm – 夜空中最亮的星 直接使用nvm脚本安装的时候一直失败&#xff0c;应该是国内网络的问题&#xff0c;使用下面方案进行解决&#xff1a; 下载 cd / wget https://github.com/nvm-sh/nvm/arch…

机器学习-09-图像处理01-理论

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中图像处理技术。 参考 02图像知识 色彩基础知识整理-色相、饱和度、明度、色调 图像特征提取&#xff08;VGG和Resnet特征提取卷积过程详解&#xff09; Python图像处理入门 【人工智能】PythonOpenCV…

线程池-线程池分类

线程池分类 FixedThreadPool&#xff1a;固定大小线程池&#xff0c;线程数量固定&#xff0c;不会自动扩容或缩容。 CachedThreadPool&#xff1a;缓存线程池&#xff0c;线程数量不固定&#xff0c;根据需要自动扩容或缩容。适用于执行大量短时间任务的场景。 SingleThrea…

HttpClient、OKhttp、RestTemplate接口调用对比( Java HTTP 客户端)

文章目录 HttpClient、OKhttp、RestTemplate接口调用对比HttpClientOkHttprestTemplate HttpClient、OKhttp、RestTemplate接口调用对比 HttpClient、OkHttp 和 RestTemplate 是三种常用的 Java HTTP 客户端库&#xff0c;它们都可以用于发送 HTTP 请求和接收 HTTP 响应&#…