diff options
| author | Brad Fitzpatrick <bradfitz@golang.org> | 2018-09-25 20:59:52 +0000 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2018-10-02 23:33:23 +0000 |
| commit | a73d8f5a86185aeb39e398d0226d56be7d9247ca (patch) | |
| tree | 92e0bacea533a02cad00b315b5f84a9e4819a0fb /src/net/http/request.go | |
| parent | 3aa3c052e302add1d30b0481b0347c47f190bef9 (diff) | |
| download | go-a73d8f5a86185aeb39e398d0226d56be7d9247ca.tar.xz | |
net/http: make Transport send WebSocket upgrade requests over HTTP/1
WebSockets requires HTTP/1 in practice (no spec or implementations
work over HTTP/2), so if we get an HTTP request that looks like it's
trying to initiate WebSockets, use HTTP/1, like browsers do.
This is part of a series of commits to make WebSockets work over
httputil.ReverseProxy. See #26937.
Updates #26937
Change-Id: I6ad3df9b0a21fddf62fa7d9cacef48e7d5d9585b
Reviewed-on: https://go-review.googlesource.com/c/137437
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Diffstat (limited to 'src/net/http/request.go')
| -rw-r--r-- | src/net/http/request.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/net/http/request.go b/src/net/http/request.go index ac3302934f..967de7917f 100644 --- a/src/net/http/request.go +++ b/src/net/http/request.go @@ -1371,3 +1371,10 @@ func requestMethodUsuallyLacksBody(method string) bool { } return false } + +// requiresHTTP1 reports whether this request requires being sent on +// an HTTP/1 connection. +func (r *Request) requiresHTTP1() bool { + return hasToken(r.Header.Get("Connection"), "upgrade") && + strings.EqualFold(r.Header.Get("Upgrade"), "websocket") +} |
