Golang:http2和TLS握手错误

时间:2016-09-17 13:37:29

标签: ssl go https http2 sslhandshakeexception

我有一个Go应用程序,同时启用了http(在端口80上)和https(在端口443上)。

我不断收到很多这三种错误:

  • http2: server: error reading preface from client 79.49.31.60:37993: timeout waiting for client preface

  • http: TLS handshake error from 151.38.29.250:44235: EOF

  • http: TLS handshake error from 2.239.197.163:6742: read tcp x.xxx.xxx.xxx:443->2.239.197.163:6742: i/o timeout

任何人都可以解释这些内容的含义吗?

请注意:所有这些请求都来自移动浏览器(在Android和iOS设备上)

1 个答案:

答案 0 :(得分:7)

http2: server: error reading preface from client 79.49.31.60:37993: timeout waiting for client preface

这意味着客户端在服务器超时之前未能发送http2连接前言(https://tools.ietf.org/html/rfc7540#section-3.5)。

http: TLS handshake error from 151.38.29.250:44235: EOF

这意味着当服务器和客户端执行TLS握手时,服务器看到连接已关闭,即EOF。

http: TLS handshake error from 2.239.197.163:6742: read tcp x.xxx.xxx.xxx:443->2.239.197.163:6742: i/o timeout

这意味着当服务器在TLS握手期间等待从客户端读取时,客户端在关闭连接之前没有发送任何内容。

正如@JimB所指出的,那些看起来很正常。如果您认为超时时间过早,您可以通过定义自定义net.http.Transporthttps://golang.org/pkg/net/http/#Transport来定义自定义超时,并为超时设置更高的值。