mirror of
https://github.com/openfaas/faas.git
synced 2025-06-09 16:56:47 +00:00
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: Dmitri Rubinstein <dmitri.rubinstein@googlemail.com>
This commit is contained in:
parent
c86de503c7
commit
fd0abe46dd
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user