test-req / server.ts
coyotte508
⚗️ Also test public suffix
3980956
raw
history blame
1.46 kB
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`,
`cookie-none-top-level=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=None; Secure; Domain=hf.space`,
`cookie-lax-top-level=${cookie.replace(/[^A-Za-z0-9]+/g, '-')}; SameSite=Lax; Secure; Domain=hf.space`,
]);
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>
<p>Cookie SameSite=None Top-Level: ${ctx.cookies.get("cookie-none-top-level")?.replace(/</g, '$lt;')}</p>
<p>Cookie SameSite=Lax Top-Level: ${ctx.cookies.get("cookie-lax-top-level")?.replace(/</g, '$lt;')}</p>
<form method="POST">
<label>Cookie value<br>
<input type="text" name="cookie" />
</label>
<button>Send</button>
</form>
</body>
</html>`;
}
});
app.listen(7860);