Moderní tvorba webových aplikací

O webu

SvelteKit API dostupné z cizí domény

Jak povolit přístup na API vytvořené ve SvelteKitu z jiné domény.

2 minuty

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

Detekce otevření DevTools

Jak zjistit, že se na stránce otevřely vývojářské nástroje.

13 minut

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.

12 minut

Sleep v JavaScriptu

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

6 minut

JavaScript Battery API

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

3 minuty

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025