From 6326ba38c980789a0c84efad197bfcd54f28b5eb Mon Sep 17 00:00:00 2001 From: a <a@a.a> Date: Tue, 30 Aug 2022 23:09:01 -0500 Subject: [PATCH] add psudo support for origin as fallback, fixed tests --- http_test.go | 2 +- websocket.go | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/http_test.go b/http_test.go index c1242e5..6fb56af 100644 --- a/http_test.go +++ b/http_test.go @@ -176,7 +176,7 @@ func TestHTTPPeerInfo(t *testing.T) { t.Fatal(err) } c.SetHeader("user-agent", "ua-testing") - c.SetHeader("origin", "origin.example.com") + c.SetHeader("x-forwarded-for", "origin.example.com") // Request peer information. var info PeerInfo diff --git a/websocket.go b/websocket.go index 76e6aee..42ec512 100644 --- a/websocket.go +++ b/websocket.go @@ -120,7 +120,6 @@ func wsClientHeaders(endpoint, origin string) (string, http.Header, error) { header := make(http.Header) if origin != "" { header.Add("origin", origin) - header.Add("X-Forwarded-For", origin) } if endpointURL.User != nil { b64auth := base64.StdEncoding.EncodeToString([]byte(endpointURL.User.String())) @@ -177,10 +176,16 @@ func newWebsocketCodec(ctx context.Context, c *websocket.Conn, host string, req } // Fill in connection details. wc.info.HTTP.Host = host + // traefik proxy protocol headers wc.info.HTTP.Origin = req.Get("X-Real-Ip") if wc.info.HTTP.Origin == "" { wc.info.HTTP.Origin = req.Get("X-Forwarded-For") } + // origin header fallback + if wc.info.HTTP.Origin == "" { + wc.info.HTTP.Origin = req.Get("origin") + } + wc.info.RemoteAddr = wc.info.HTTP.Origin wc.info.HTTP.UserAgent = req.Get("User-Agent") wc.info.HTTP.Headers = req // Start pinger. -- GitLab