fix: bypass CSRF for Web Share Target POST
All checks were successful
Build & Push Docker Image / build-and-push (push) Successful in 41s

SvelteKit's CSRF guard rejects POST requests whose Origin header doesn't
match the site's own origin. Web Share Target POSTs legitimately arrive
from external origins (e.g. youtube.com, OS share sheet). Strip the
Origin header in a handle hook for /share POST only.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Giancarmine Salucci
2026-05-06 18:58:39 +02:00
parent d1295ce343
commit 08adff1562

14
src/hooks.server.ts Normal file
View File

@@ -0,0 +1,14 @@
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ event, resolve }) => {
// Web Share Target POSTs arrive with a foreign Origin header (e.g. from
// youtube.com or the OS share sheet), which trips SvelteKit's CSRF guard.
// Dropping the header for this one route is safe — it is intentionally
// designed to receive cross-origin form submissions.
if (event.url.pathname === '/share' && event.request.method === 'POST') {
const headers = new Headers(event.request.headers);
headers.delete('origin');
event.request = new Request(event.request, { headers });
}
return resolve(event);
};