From 6ce916e9717de642ecfb5e4ff4786908953e5629 Mon Sep 17 00:00:00 2001 From: k1low Date: Fri, 15 Dec 2023 13:08:10 +0900 Subject: [PATCH] Dont touch req.URL --- testutil/relayer.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/testutil/relayer.go b/testutil/relayer.go index 2d6a9cb..4fac6b3 100644 --- a/testutil/relayer.go +++ b/testutil/relayer.go @@ -26,14 +26,18 @@ func NewRelayer(h map[string]string) *Relayer { func (r *Relayer) GetUpstream(req *http.Request) (*url.URL, error) { host := req.Host if upstream, ok := r.h[host]; ok { + ru, err := url.Parse(req.URL.String()) + if err != nil { + return nil, err + } uu, err := url.Parse(upstream) if err != nil { return nil, err } - req.URL.Scheme = uu.Scheme - req.URL.Host = uu.Host - req.URL.Path = strings.ReplaceAll(path.Join(uu.Path, req.URL.Path), "//", "/") - return req.URL, nil + ru.Scheme = uu.Scheme + ru.Host = uu.Host + ru.Path = strings.ReplaceAll(path.Join(uu.Path, req.URL.Path), "//", "/") + return ru, nil } return nil, fmt.Errorf("not found upstream: %v", host) }