fix: bypass CSRF for Web Share Target POST
Build & Push Docker Image / build-and-push (push) Successful in 41s
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:
co-authored by
Copilot
parent
d1295ce343
commit
08adff1562
@@ -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);
|
||||
};
|
||||
Reference in New Issue
Block a user