33 lines
1 KiB
TypeScript
33 lines
1 KiB
TypeScript
import type { Handle } from "@sveltejs/kit"
|
|
|
|
export const handle: Handle = async ({ event, resolve }) => {
|
|
// Add CORS support.
|
|
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 })
|
|
}
|
|
|
|
const response = await resolve(event)
|
|
if (response.headers.get("Content-Type")?.startsWith("application/json")) {
|
|
response.headers.set("Access-Control-Allow-Origin", "*")
|
|
}
|
|
return response
|
|
}
|