mirror of
https://github.com/MercuryWorkshop/scramjet.git
synced 2025-05-15 23:30:00 -04:00
set on the host arg
This commit is contained in:
parent
c4e90a50ab
commit
51abf6577f
1 changed files with 140 additions and 130 deletions
|
@ -24,8 +24,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
|
||||||
|
|
||||||
async fetch({ request }: FetchEvent) {
|
async fetch({ request }: FetchEvent) {
|
||||||
const urlParam = new URLSearchParams(new URL(request.url).search);
|
const urlParam = new URLSearchParams(new URL(request.url).search);
|
||||||
const { encodeUrl, decodeUrl } = self.$scramjet.shared.url;
|
const { encodeUrl, decodeUrl, rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared;
|
||||||
const { rewriteHeaders, rewriteHtml, rewriteJs, rewriteCss, rewriteWorkers } = self.$scramjet.shared.rewrite;
|
|
||||||
|
|
||||||
if (urlParam.has("url")) {
|
if (urlParam.has("url")) {
|
||||||
return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url"))))
|
return Response.redirect(encodeUrl(urlParam.get("url"), new URL(urlParam.get("url"))))
|
||||||
|
@ -34,7 +33,7 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
|
||||||
try {
|
try {
|
||||||
const url = new URL(decodeUrl(request.url));
|
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, {
|
const response: BareResponseFetch = await this.client.fetch(url, {
|
||||||
method: request.method,
|
method: request.method,
|
||||||
|
@ -52,10 +51,22 @@ self.ScramjetServiceWorker = class ScramjetServiceWorker {
|
||||||
const responseHeaders = rewriteHeaders(response.rawHeaders, url);
|
const responseHeaders = rewriteHeaders(response.rawHeaders, url);
|
||||||
|
|
||||||
for (const cookie of (responseHeaders["set-cookie"] || []) as string[]) {
|
for (const cookie of (responseHeaders["set-cookie"] || []) as string[]) {
|
||||||
let cookieParsed = cookie.split(";").map(x=>x.trim().split("="));
|
let cookieParsed = cookie.split(";").map(x => x.trim().split("="));
|
||||||
|
|
||||||
let [key, value] = cookieParsed.shift();
|
let [key, value] = cookieParsed.shift();
|
||||||
value = value.replace("\"", "");
|
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 });
|
cookieStore.set(key, { value: value, args: cookieParsed });
|
||||||
|
} else {
|
||||||
|
cookieStore.set(key, { value: value, args: cookieParsed });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (response.body) {
|
if (response.body) {
|
||||||
|
@ -177,8 +188,7 @@ function errorTemplate(
|
||||||
<button id="reload">Reload</button>
|
<button id="reload">Reload</button>
|
||||||
<hr />
|
<hr />
|
||||||
<p><i>Scramjet v<span id="version"></span></i></p>
|
<p><i>Scramjet v<span id="version"></span></i></p>
|
||||||
<script src="${
|
<script src="${"data:application/javascript," + encodeURIComponent(script)
|
||||||
"data:application/javascript," + encodeURIComponent(script)
|
|
||||||
}"></script>
|
}"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue