Skip to content

Commit 4794dce

Browse files
committed
Fix BrowserSessionMiddleware RawPath rewrite
1 parent b6a77bc commit 4794dce

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

lib/browserscope/middleware.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func BrowserSessionMiddleware(sessionID, jwt string) option.Middleware {
3333
rest = "/" + rest
3434
}
3535
req.URL.Path = prefix + rest
36+
req.URL.RawPath = ""
3637
}
3738
}
3839

lib/browserscope/middleware_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,27 @@ func TestBrowserSessionMiddlewarePreservesExistingJWT(t *testing.T) {
5555
func TestBrowserSessionMiddlewareType(t *testing.T) {
5656
var _ option.Middleware = BrowserSessionMiddleware("a", "b")
5757
}
58+
59+
func TestBrowserSessionMiddlewareClearsRawPathOnRewrite(t *testing.T) {
60+
mw := BrowserSessionMiddleware("sess1", "")
61+
var final *http.Request
62+
next := func(req *http.Request) (*http.Response, error) {
63+
final = req
64+
return nil, nil
65+
}
66+
67+
u, err := url.Parse("https://host/browser/kernel/browsers/sess1/process/%20exec")
68+
if err != nil {
69+
t.Fatal(err)
70+
}
71+
req := &http.Request{URL: u}
72+
73+
_, _ = mw(req, next)
74+
75+
if final.URL.RawPath != "" {
76+
t.Fatalf("raw path should be cleared after rewrite: got %q", final.URL.RawPath)
77+
}
78+
if got := final.URL.EscapedPath(); got != "/browser/kernel/process/%20exec" {
79+
t.Fatalf("escaped path rewrite: got %q", got)
80+
}
81+
}

0 commit comments

Comments
 (0)