
SvelteKit API dostupné z cizí domény
Jak povolit přístup na API vytvořené ve SvelteKitu z jiné domény.
SvelteKit je komplexní nástroj pro vytváření webů.
Jednak umožňuje vytvářet skvelá uživatelská rozhraní ve Svelte, ale kromě toho řešit i renderování na straně serveru a další věci – například vytvářet API endpointy.
To jde velmi jednoduše umístěním souboru +server.ts
např. do složky routes/api/test
.
Automatický router založený na souborovém systému se postará o to, že vznikne endpoint https://example.com/api/test
. Obsah souboru může být následující:
import { json } from '@sveltejs/kit';
export async function GET() {
return json({ test: 'ok' });
}
Při navštívení adresy https://example.com/api/test
se zobrazí výstup {"test":"ok"}
.
Nastavení CORS
Pro umožnění získání dat z cizí domény je potřeba použít tzv. hook.
Jde o soubor hooks.server.ts
(umístěný rovnou ve složce src
), který umožňuje modifikovat reqesty.
V tomto případě přidá potřebnou hlavičku Access-Control-Allow-Origin
, pokud doména volající SvelteKit vyhoví regulárnímu výrazu /^(.*)?\.?example\.com$/
:
import type { Handle } from '@sveltejs/kit';
export const handle = (async ({ event, resolve }) => {
const allowedDomains = /^(.*)?\.?example\.com$/;
let cors: string | null = null;
const requestOrigin = event.request.headers.get('origin') || '';
if (allowedDomains.test(requestOrigin)) {
cors = requestOrigin;
}
const response = await resolve(event);
if (cors && event.url.pathname.startsWith('/api')) {
response.headers.append('Access-Control-Allow-Origin', cors);
}
return response;
}) satisfies Handle;
Pro otestování se hodí nástroj CORS Tester.
Související články


JavaScript null
a undefined
Rozdíly mezi null
a undefined
v JavaScriptu, kdy je používat a jak se vyhnout běžným chybám.

Sleep v JavaScriptu
Jak implementovat sleep/delay funkcionalitu v JavaScriptu pomocí Promise
a async
/await

JavaScript Battery API
Jak v JS zjistit stav baterie, co dnes funguje a kdy API nepoužívat.