Cookies / response headers

Loader reads request.headers.get("cookie"); action returns a Response whose set-cookie header threads out to the browser. Subsequent loads see the cookie. Hits both the V8 Web-API shim path and bext-server's response-header marshaling.

Cookies the server sees on this request

(no cookies present)

Click "Set", then refresh — you should see demo_session in the cookie list above.

Source

export async function loader({ request }: LoaderArgs) {
        const cookies = parseCookies(request.headers.get("cookie") ?? "");
        return { cookies };
    }
    export async function action({ request }: ActionArgs) {
        const form = await request.formData();
        const op = String(form.get("op") ?? "");
        if (op === "set") {
            return new Response(JSON.stringify({ ok: true, set: true }), {
                status: 200,
                headers: {
                    "content-type": "application/json",
                    "set-cookie": "demo_session=abc123; Path=/; Max-Age=300",
                },
            });
        }
        if (op === "clear") {
            return new Response(JSON.stringify({ ok: true, cleared: true }), {
                status: 200,
                headers: {
                    "content-type": "application/json",
                    "set-cookie": "demo_session=; Path=/; Max-Age=0",
                },
            });
        }
        return { ok: true };
    }