Skip to content

Commit 7a1fbfc

Browse files
committed
[scramjet/controller] fix charset encoding in worker inject, put injected script in data url
1 parent 9579a99 commit 7a1fbfc

File tree

1 file changed

+19
-4
lines changed
  • packages/scramjet/packages/controller/src

1 file changed

+19
-4
lines changed

packages/scramjet/packages/controller/src/index.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,18 @@ export class Controller {
310310
}
311311
}
312312

313+
function base64Encode(text: string) {
314+
return btoa(
315+
new TextEncoder()
316+
.encode(text)
317+
.reduce(
318+
(data, byte) => (data.push(String.fromCharCode(byte)), data),
319+
[] as any
320+
)
321+
.join("")
322+
);
323+
}
324+
313325
function yieldGetInjectScripts(
314326
cookieJar: ScramjetGlobal.CookieJar,
315327
config: Config,
@@ -328,8 +340,8 @@ function yieldGetInjectScripts(
328340
script(config.injectPath),
329341
script(prefix.href + config.virtualWasmPath),
330342
script(
331-
"data:text/javascript;base64," +
332-
btoa(`
343+
"data:text/javascript;charset=utf-8;base64," +
344+
base64Encode(`
333345
document.currentScript.remove();
334346
$scramjetController.load({
335347
config: ${JSON.stringify(config)},
@@ -381,7 +393,9 @@ export class Frame {
381393

382394
str += script(config.scramjetPath);
383395
str += script(this.prefix + config.virtualWasmPath);
384-
str += `
396+
str += script(
397+
"data:text/javascript;charset=utf-8;base64," +
398+
base64Encode(`
385399
(()=>{
386400
const { ScramjetClient, CookieJar, setWasm } = $scramjet;
387401
@@ -410,7 +424,8 @@ export class Frame {
410424
411425
client.hook();
412426
})();
413-
`;
427+
`)
428+
);
414429

415430
return str;
416431
},

0 commit comments

Comments
 (0)