mirror of
https://github.com/golang/go
synced 2024-11-02 09:28:34 +00:00
net/http/cgi: remove port from the CGI environment of variable SERVER_NAME
The SERVER_NAME variable in the CGI environment should not contain the port, according to the section 4.1.14 of the RFC 3875. Fixes #53368. Change-Id: Ifeea70206878cf83bc0bda35cb514d0226bbcd8c Reviewed-on: https://go-review.googlesource.com/c/go/+/412434 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Damien Neil <dneil@google.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: xie cui <523516579@qq.com> Auto-Submit: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
parent
c81dfdd47a
commit
7ba458d7d8
2 changed files with 8 additions and 3 deletions
|
@ -138,7 +138,6 @@ func (h *Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|||
|
||||
env := []string{
|
||||
"SERVER_SOFTWARE=go",
|
||||
"SERVER_NAME=" + req.Host,
|
||||
"SERVER_PROTOCOL=HTTP/1.1",
|
||||
"HTTP_HOST=" + req.Host,
|
||||
"GATEWAY_INTERFACE=CGI/1.1",
|
||||
|
@ -158,6 +157,12 @@ func (h *Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|||
env = append(env, "REMOTE_ADDR="+req.RemoteAddr, "REMOTE_HOST="+req.RemoteAddr)
|
||||
}
|
||||
|
||||
if hostDomain, _, err := net.SplitHostPort(req.Host); err == nil {
|
||||
env = append(env, "SERVER_NAME="+hostDomain)
|
||||
} else {
|
||||
env = append(env, "SERVER_NAME="+req.Host)
|
||||
}
|
||||
|
||||
if req.TLS != nil {
|
||||
env = append(env, "HTTPS=on")
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@ func TestCGIBasicGet(t *testing.T) {
|
|||
"param-a": "b",
|
||||
"param-foo": "bar",
|
||||
"env-GATEWAY_INTERFACE": "CGI/1.1",
|
||||
"env-HTTP_HOST": "example.com",
|
||||
"env-HTTP_HOST": "example.com:80",
|
||||
"env-PATH_INFO": "",
|
||||
"env-QUERY_STRING": "foo=bar&a=b",
|
||||
"env-REMOTE_ADDR": "1.2.3.4",
|
||||
|
@ -128,7 +128,7 @@ func TestCGIBasicGet(t *testing.T) {
|
|||
"env-SERVER_PORT": "80",
|
||||
"env-SERVER_SOFTWARE": "go",
|
||||
}
|
||||
replay := runCgiTest(t, h, "GET /test.cgi?foo=bar&a=b HTTP/1.0\nHost: example.com\n\n", expectedMap)
|
||||
replay := runCgiTest(t, h, "GET /test.cgi?foo=bar&a=b HTTP/1.0\nHost: example.com:80\n\n", expectedMap)
|
||||
|
||||
if expected, got := "text/html", replay.Header().Get("Content-Type"); got != expected {
|
||||
t.Errorf("got a Content-Type of %q; expected %q", got, expected)
|
||||
|
|
Loading…
Reference in a new issue