set on the host arg

This commit is contained in:
Toshit Chawda 2024-07-14 14:12:16 -07:00
parent c4e90a50ab
commit 51abf6577f
No known key found for this signature in database
GPG key ID: 91480ED99E2B3D9D

View file

@ -24,8 +24,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
async fetch({ request }: FetchEvent) {
const urlParam = new URLSearchParams(new URL(request.url).search);
const { encodeUrl, decodeUrl } = self.$scramjet.shared.url;
const { rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared.rewrite;
const { encodeUrl, decodeUrl, rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared;
if (urlParam.has("url")) {
return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url"))))
@ -34,7 +33,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
try {
const url = new URL(decodeUrl(request.url));
const cookieStore = new IDBMap(url.origin, { durability: "relaxed", prefix: "Cookies" });
const cookieStore = new IDBMap(url.host, { durability: "relaxed", prefix: "Cookies" });
const response: BareResponseFetch = await this.client.fetch(url, {
method: request.method,
@ -53,9 +52,21 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
for (const cookie of (responseHeaders["set-cookie"] || []) as string[]) {
let cookieParsed = cookie.split(";").map(x => x.trim().split("="));
let [key, value] = cookieParsed.shift();
value = value.replace("\"", "");
const hostArg = cookieParsed.find(x => x[0].toLowerCase() === "domain");
cookieParsed = cookieParsed.filter(x => x[0].toLowerCase() !== "domain");
let host = hostArg ? hostArg[1] : undefined;
if (host && host !== url.host) {
if (host.startsWith(".")) host = host.slice(1);
const cookieStore = new IDBMap(host, { durability: "relaxed", prefix: "Cookies" });
cookieStore.set(key, { value: value, args: cookieParsed });
} else {
cookieStore.set(key, { value: value, args: cookieParsed });
}
}
if (response.body) {
@ -177,8 +188,7 @@ function errorTemplate(
<button id="reload">Reload</button>
<hr />
<p><i>Scramjet v<span id="version"></span></i></p>
<script src="${
"data:application/javascript," + encodeURIComponent(script)
<script src="${"data:application/javascript," + encodeURIComponent(script)
}"></script>
</body>
</html>