![](/img/trans.png)
[英]how to check if hostname verification takes place during TLS/SSL handshake?
[英]How to check if error is tls handshake timeout in Go
我有以下代码向URL请求并检查错误。
import "net/http"
response, err := http.Head("url")
如何检查错误是否是由于tls握手超时引起的? 我尝试了以下方法:
if err != nil {
tlsError, ok := err.(http.tlsHandshakeTimeoutError)
if ok {
// handle the error
}
}
但是我无法访问http.tlsHandshakeTimeoutError
类型,因为它未导出。 我还能如何检查go中的错误类型?
是tlsHandshakeTimeoutError
不导出,并且检查此错误的唯一可能性是:
import "net/url"
// ....
if urlError,ok := err.(*url.Error) ; ok {
if urlError.Error() == "net/http: TLS handshake timeout" {
// handle the error
}
}
这是关于它的讨论的公开票:
https://github.com/golang/go/issues/15935
顺便说一下, http
错误(还有tlsHandshakeTimeoutError
还提供:
type WithTimeout interface {
Timeout() bool
}
您可以使用它来检查是否不喜欢字符串比较。 这是来自http2包的isTemporary实现的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.