Spaces:
Sleeping
Sleeping
File size: 2,236 Bytes
c24174e eed224b c24174e eed224b cd60ce3 0fb7b7d eed224b 0a48e3f 3980956 0a48e3f eed224b c01a583 eed224b a73f02a eed224b a45209c 3575ef9 eed224b a45209c b6543fb a45209c eed224b cd60ce3 c24174e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
import Koa from "koa";
import bodyParser from "koa-bodyparser";
const app = new Koa();
app.use(bodyParser());
app.use(async (ctx) => {
if (ctx.request.method === "POST") {
const { cookie } = ctx.request.body as { cookie: string };
ctx.set("Set-Cookie", [
`cookie-none=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=None; Secure`,
`cookie-lax=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=Lax; Secure`,
]);
ctx.redirect( "/");
} else {
ctx.body = `<html>
<body>
<pre>${JSON.stringify(Object.fromEntries(Object.entries(ctx.request.headers)), null, 2)}</pre>
<p>Cookie SameSite=None: ${ctx.cookies.get("cookie-none")?.replace(/</g, '$lt;')}</p>
<p>Cookie SameSite=Lax: ${ctx.cookies.get("cookie-lax")?.replace(/</g, '$lt;')}</p>
<form method="POST">
<label>Cookie value<br>
<input type="text" name="cookie" />
</label>
<button>Send</button>
</form>
<p>Browser supports storage access API: <span id="storage-access-api"></span></p>
<p>Page can store cookies: <span id="page-can-store-cookies"></span></p>
<button id="request-storage-access" style="display: none;" type="button">Request storage access</button>
</body>
<script>
const storageAccess = document.getElementById("storage-access-api");
const pageCanStoreCookies = document.getElementById("page-can-store-cookies");
const requestStorageAccess = document.getElementById("request-storage-access");
if ("hasStorageAccess" in document) {
storageAccess.innerText = "Yes";
document.hasStorageAccess().then((hasAccess) => {
console.log("has access", hasAccess);
pageCanStoreCookies.innerText = hasAccess ? "Yes" : "No";
if (!hasAccess) {
requestStorageAccess.style.display = "block";
}
});
} else {
storageAccess.innerText = "No";
}
requestStorageAccess.addEventListener("click", () => {
document.requestStorageAccess().then(() => {
pageCanStoreCookies.innerText = "Yes";
requestStorageAccess.style.display = "none";
});
});
</script>
</html>`;
}
});
app.listen(7860);
|