From d7c75afa4c18150f0de437984963301b92f4ef4f Mon Sep 17 00:00:00 2001 From: Emmanuel Raviart Date: Thu, 11 Aug 2022 16:26:55 +0200 Subject: [PATCH] Add CORS support. --- src/hooks.ts | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/hooks.ts b/src/hooks.ts index a6ad9fb..36abd74 100644 --- a/src/hooks.ts +++ b/src/hooks.ts @@ -1,7 +1,36 @@ +import type { GetSession, Handle } from "@sveltejs/kit" + import config from "$lib/server/config" -export function getSession(): App.Session { +export const getSession: GetSession = async () => { return { title: config.title, } } + +export const handle: Handle = async ({ event, resolve }) => { + const { request } = event + if (request.method === "OPTIONS") { + const headers: { [name: string]: string } = { + "Access-Control-Allow-Methods": "GET, OPTIONS", + "Access-Control-Allow-Origin": "*", + } + const vary: string[] = [] + const allowedHeaders = + request.headers + .get("Access-Control-Request-Headers") + ?.split(",") + .map((name) => name.trim()) ?? [] + if (allowedHeaders.length > 0) { + vary.push("Access-Control-Request-Headers") + headers["Access-Control-Allow-Headers"] = allowedHeaders.join(", ") + } + + if (vary.length > 0) { + headers["Vary"] = vary.join(", ") + } + return new Response(null, { status: 204, headers }) + } + + return await resolve(event) +}