Skip to content

Commit 6aa2a58

Browse files
committed
[core] fix <form> query parameters
1 parent 0ad58cc commit 6aa2a58

File tree

1 file changed

+32
-12
lines changed

1 file changed

+32
-12
lines changed

src/worker/fetch.ts

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,25 +55,45 @@ export async function handleFetch(
5555
}
5656

5757
let workerType = "";
58-
if (requestUrl.searchParams.has("type")) {
59-
workerType = requestUrl.searchParams.get("type") as string;
60-
requestUrl.searchParams.delete("type");
61-
}
62-
if (requestUrl.searchParams.has("dest")) {
63-
requestUrl.searchParams.delete("dest");
58+
let topFrameName;
59+
let parentFrameName;
60+
61+
let extraParams: Record<string, string> = {};
62+
for (const [param, value] of requestUrl.searchParams.entries()) {
63+
switch (param) {
64+
case "type":
65+
workerType = value;
66+
break;
67+
case "dest":
68+
break;
69+
case "topFrame":
70+
topFrameName = value;
71+
break;
72+
case "parentFrame":
73+
parentFrameName = value;
74+
break;
75+
default:
76+
dbg.warn(
77+
`${requestUrl.href} extraneous query parameter ${param}. Assuming <form> element`
78+
);
79+
extraParams[param] = value;
80+
break;
81+
}
82+
requestUrl.searchParams.delete(param);
6483
}
84+
6585
const url = new URL(unrewriteUrl(requestUrl));
86+
// now that we're past unrewriting it's safe to add back the params
87+
for (const [param, value] of Object.entries(extraParams)) {
88+
url.searchParams.set(param, value);
89+
}
6690

6791
const meta: URLMeta = {
6892
origin: url,
6993
base: url,
94+
topFrameName,
95+
parentFrameName,
7096
};
71-
if (requestUrl.searchParams.has("topFrame")) {
72-
meta.topFrameName = requestUrl.searchParams.get("topFrame");
73-
}
74-
if (requestUrl.searchParams.has("parentFrame")) {
75-
meta.parentFrameName = requestUrl.searchParams.get("parentFrame");
76-
}
7797

7898
if (
7999
requestUrl.pathname.startsWith(`${this.config.prefix}blob:`) ||

0 commit comments

Comments
 (0)