Spaces:
Sleeping
Sleeping
File size: 2,864 Bytes
c24174e eed224b c24174e eed224b cd60ce3 0fb7b7d eed224b 0a48e3f 3980956 0a48e3f eed224b c01a583 eed224b a73f02a eed224b a45209c 01903e8 3575ef9 131324f eed224b a45209c 01903e8 a45209c 01903e8 a45209c 131324f a45209c 01903e8 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 61 62 63 64 65 66 67 68 69 70 71 |
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="check-storage-access" type="button">Re-check storage access</button>
<button id="request-storage-access" style="display: none;" type="button">Request storage access</button>
<p style="color: red" id="error-p"></p>
</body>
<script>
const storageAccess = document.getElementById("storage-access-api");
const pageCanStoreCookies = document.getElementById("page-can-store-cookies");
const requestStorageAccess = document.getElementById("request-storage-access");
const checkStorageAccessBtn = document.getElementById("check-storage-access");
const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
function checkStorageAccess() {
if ("hasStorageAccess" in document) {
storageAccess.innerText = "Yes";
document.hasStorageAccess().then((hasAccess) => {
console.log("has access", hasAccess);
pageCanStoreCookies.innerText = hasAccess ? "Yes" : (isFirefox ? "No, on firefox" : "No");
if (!hasAccess) {
requestStorageAccess.style.display = "block";
}
});
} else {
storageAccess.innerText = "No";
}
}
checkStorageAccess();
requestStorageAccess.addEventListener("click", () => {
document.requestStorageAccess().then(() => {
pageCanStoreCookies.innerText = "Yes";
requestStorageAccess.style.display = "none";
}).catch((e) => {
console.error(e);
document.getElementById("error-p").innerText = e.message;
})
});
checkStorageAccessBtn.addEventListener("click", checkStorageAccess);
</script>
</html>`;
}
});
app.listen(7860);
|