mirror of
https://github.com/openfaas/faas.git
synced 2025-06-10 01:06: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)
|
upstreamReq, _ := http.NewRequest(r.Method, url, nil)
|
||||||
|
if len(r.Host) > 0 {
|
||||||
|
upstreamReq.Host = r.Host
|
||||||
|
}
|
||||||
copyHeaders(upstreamReq.Header, &r.Header)
|
copyHeaders(upstreamReq.Header, &r.Header)
|
||||||
|
|
||||||
upstreamReq.Header["X-Forwarded-For"] = []string{r.RemoteAddr}
|
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) {
|
func Test_getServiceName(t *testing.T) {
|
||||||
scenarios := []struct {
|
scenarios := []struct {
|
||||||
name string
|
name string
|
||||||
|
Loading…
x
Reference in New Issue
Block a user