Golang Go语言中 http 请求提示重复的 header 头如何解决?
使用 go 自带的 net/http 中的方法请求 url ,总提示too many transfer encodings: ["chunked" "chunked"]
导致报错无法获取 Body 内容。 根据关键词找到了相关的issues 在 Golang 的 1.15 版本上才出现的问题,虽说也提供了相关的解决方法(修改 go 的库文件)但是总感觉不方便。
除了 issues 中提到的方法,还有其他方法进行修复吗?
附上返回包的 header
HTTP/1.1 200 OK
transfer-encoding: chunked
X-Frame-Options: SAMEORIGIN
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 10 Nov 2022 02:23:46 GMT
Golang Go语言中 http 请求提示重复的 header 头如何解决?
更多关于Golang Go语言中 http 请求提示重复的 header 头如何解决?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
目测是 map 区分大小写导致的,但还得看你怎么调用的,应该给出你调用的例子
更多关于Golang Go语言中 http 请求提示重复的 header 头如何解决?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
代码是这样的go <br>func login() (Token string, Account string, FullName string) {<br> client = &http.Client{}<br> data := "提交的数据"<br> req, _ := http.NewRequest("POST", "http:///xxxxxx", bytes.NewReader([]byte(data)))<br> req.Header.Set("Content-Type", "application/json")<br> req.Header.Set("Accept", "*/*")<br> req.Header.Set("Cache-Control", "no-cache")<br><br> resp, _ := <a target="_blank" href="http://client.Do" rel="nofollow noopener">client.Do</a>(req)<br><br> r, _ := io.ReadAll(resp.Body)<br><br>...<br>
这是啥网站
加个这个请求头试试?<br>req.Header.Set ("Accept-Encoding","identity")<br>
禁止中国号码注册 咋办
这个试过了 禁止分片传输没用
在Go语言中处理HTTP请求时,如果遇到重复的Header头问题,通常是由于在发送请求或处理响应时,不小心或错误地添加了重复的Header。以下是一些解决步骤和建议:
-
检查Header设置: 确保在发送请求前,每个Header只被设置一次。使用
http.Request
的Header.Set
方法来设置Header,该方法会覆盖之前可能存在的同名Header。 -
使用
http.Header
的Add
方法需谨慎:Header.Add
方法会追加Header值,而不是覆盖。如果需要确保Header的唯一性,应使用Set
方法。 -
中间件或代理处理: 如果问题出现在中间件或代理层,检查这些组件是否正确地处理或转发了Header。可能需要修改中间件或代理的代码,以确保Header的正确合并或覆盖。
-
调试和日志: 在发送请求前后打印出
http.Request
的Header,以便观察是否有重复的Header被添加。这可以通过简单的日志记录实现。 -
更新依赖库: 如果使用的是第三方库来处理HTTP请求,确保这些库是最新版本,并检查其文档或issue跟踪器,看是否有关于重复Header的已知问题。
-
遵循HTTP标准: 根据HTTP/1.1标准,某些Header(如
Content-Length
)应该只出现一次。确保遵循这些规范,以避免潜在的兼容性问题。
通过上述步骤,通常可以解决Go语言中HTTP请求提示重复的Header头问题。