Skip to content
Snippets Groups Projects
Commit fd0abe46 authored by Dmitri Rubinstein's avatar Dmitri Rubinstein Committed by Alex Ellis
Browse files

Propagate Host header from gateway request to the function.


Host HTTP header was not propagated to the function because it is not
a part of http.Request.Header map.

Signed-off-by: default avatarDmitri Rubinstein <dmitri.rubinstein@googlemail.com>
parent c86de503
No related branches found
No related tags found
No related merge requests found
......@@ -53,6 +53,9 @@ func buildUpstreamRequest(r *http.Request, url string) *http.Request {
}
upstreamReq, _ := http.NewRequest(r.Method, url, nil)
if len(r.Host) > 0 {
upstreamReq.Host = r.Host
}
copyHeaders(upstreamReq.Header, &r.Header)
upstreamReq.Header["X-Forwarded-For"] = []string{r.RemoteAddr}
......
......@@ -68,6 +68,40 @@ func Test_buildUpstreamRequest_NoBody_GetMethod_NoQuery(t *testing.T) {
}
func Test_buildUpstreamRequest_HasHostHeaderWhenSet(t *testing.T) {
srcBytes := []byte("hello world")
reader := bytes.NewReader(srcBytes)
request, err := http.NewRequest(http.MethodPost, "http://gateway/function?code=1", reader)
if err != nil {
t.Fatal(err)
}
upstream := buildUpstreamRequest(request, "/")
if request.Host != upstream.Host {
t.Errorf("Host - want: %s, got: %s", request.Host, upstream.Host)
}
}
func Test_buildUpstreamRequest_HostHeader_Empty_WhenNotSet(t *testing.T) {
srcBytes := []byte("hello world")
reader := bytes.NewReader(srcBytes)
request, err := http.NewRequest(http.MethodPost, "/function", reader)
if err != nil {
t.Fatal(err)
}
upstream := buildUpstreamRequest(request, "/")
if request.Host != upstream.Host {
t.Errorf("Host - want: %s, got: %s", request.Host, upstream.Host)
}
}
func Test_getServiceName(t *testing.T) {
scenarios := []struct {
name string
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment