Golang Go语言中 http 请求提示重复的 header 头如何解决?

发布于 1周前 作者 itying888 来自 Go语言

使用 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

9 回复

目测是 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 = &amp;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。以下是一些解决步骤和建议:

  1. 检查Header设置: 确保在发送请求前,每个Header只被设置一次。使用http.RequestHeader.Set方法来设置Header,该方法会覆盖之前可能存在的同名Header。

  2. 使用http.HeaderAdd方法需谨慎Header.Add方法会追加Header值,而不是覆盖。如果需要确保Header的唯一性,应使用Set方法。

  3. 中间件或代理处理: 如果问题出现在中间件或代理层,检查这些组件是否正确地处理或转发了Header。可能需要修改中间件或代理的代码,以确保Header的正确合并或覆盖。

  4. 调试和日志: 在发送请求前后打印出http.Request的Header,以便观察是否有重复的Header被添加。这可以通过简单的日志记录实现。

  5. 更新依赖库: 如果使用的是第三方库来处理HTTP请求,确保这些库是最新版本,并检查其文档或issue跟踪器,看是否有关于重复Header的已知问题。

  6. 遵循HTTP标准: 根据HTTP/1.1标准,某些Header(如Content-Length)应该只出现一次。确保遵循这些规范,以避免潜在的兼容性问题。

通过上述步骤,通常可以解决Go语言中HTTP请求提示重复的Header头问题。

回到顶部