简单的Go语言客户端返回”net/http: HTTP/1.x传输连接中断:意外的EOF”。

huangapple go评论80阅读模式
英文:

simple client on golang returns "net/http: HTTP/1.x transport connection broken: unexpected EOF"

问题

你的客户端和服务器有什么问题?

根据你提供的信息,你的客户端代码似乎没有问题。它使用http.Get函数发送GET请求到http://localhost:8080/health。然后,它打印出任何错误。

然而,你的服务器代码可能存在问题。根据你提供的链接,服务器代码使用Python编写。错误消息表明,在客户端尝试建立HTTP/1.x传输连接时出现了意外的EOF(文件结束)。

可能的原因是服务器在处理请求时发生了错误,导致连接被意外关闭。你可以检查服务器代码以查找潜在的问题。你还可以尝试使用其他HTTP客户端(例如浏览器或其他工具)来发送请求,以确定问题是否出现在客户端代码中。

希望这可以帮助你解决问题!

英文:

I use simple client on golang

package main

import (
	"fmt"
	"net/http"
)

func main() {
	_, err := http.Get("http://localhost:8080/health")
	fmt.Println(err)
}

and simple http server on python https://gist.github.com/huyng/814831

but I got an error

Get "http://localhost:8080/health": net/http: HTTP/1.x transport connection broken: unexpected EOF

What is wrong with my client or server?

答案1

得分: 1

...net/http: HTTP/1.x传输连接中断:意外的EOF
我的客户端或服务器出了什么问题?

答案可以在你用于服务器的代码下面的6年前的评论中找到:

不错。然而,有一个小的HTTP协议错误,因为没有self.end_headers(),所以当提供给挑剔的客户端(haproxy)时,响应是格式错误的。;)

因此,不要只是从互联网上复制代码而不理解它的作用。特别是,如果已经有一个明确说明该代码有问题的注释。

英文:

> ...net/http: HTTP/1.x transport connection broken: unexpected EOF
> What is wrong with my client or server?

The answer lies in the 6 year old comment immediately below the code you use for the server:

> Nice. A minor HTTP protocol glitch though, as there's no self.end_headers() so the response is malformed when served to picky clients (haproxy). 简单的Go语言客户端返回”net/http: HTTP/1.x传输连接中断:意外的EOF”。

Thus, don't just take code from somewhere on the internet w/o understanding what it does. Especially, if there is already an explicitly comment saying that the code is broken

huangapple
  • 本文由 发表于 2022年10月14日 03:34:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/74060918.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定