mirror of https://github.com/gorilla/websocket.git
Update the Host field in the request header
This update checks for the 'Host' value in the request header, specifically assigning it to 'u.Host' if no value is found. This same logic is applied to 'cfg.ServerName'. The aim of this change is to ensure a correct 'Host' value is used throughout, addressing a bug related to setting the 'Host' field of the header.
This commit is contained in:
parent
666c197fc9
commit
873ca6009f
12
client.go
12
client.go
|
@ -189,6 +189,10 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
|
|||
return nil, nil, errMalformedURL
|
||||
}
|
||||
|
||||
host := requestHeader.Get("Host")
|
||||
if host == "" {
|
||||
host = u.Host
|
||||
}
|
||||
req := &http.Request{
|
||||
Method: http.MethodGet,
|
||||
URL: u,
|
||||
|
@ -196,7 +200,7 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
|
|||
ProtoMajor: 1,
|
||||
ProtoMinor: 1,
|
||||
Header: make(http.Header),
|
||||
Host: u.Host,
|
||||
Host: host,
|
||||
}
|
||||
req = req.WithContext(ctx)
|
||||
|
||||
|
@ -347,7 +351,11 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
|
|||
|
||||
cfg := cloneTLSConfig(d.TLSClientConfig)
|
||||
if cfg.ServerName == "" {
|
||||
cfg.ServerName = hostNoPort
|
||||
if host != "" {
|
||||
cfg.ServerName = host
|
||||
} else {
|
||||
cfg.ServerName = hostNoPort
|
||||
}
|
||||
}
|
||||
tlsConn := tls.Client(netConn, cfg)
|
||||
netConn = tlsConn
|
||||
|
|
Loading…
Reference in New Issue