diff --git a/packages/services/cdn-worker/src/index.ts b/packages/services/cdn-worker/src/index.ts index ac0a2b172..39f0abe2a 100644 --- a/packages/services/cdn-worker/src/index.ts +++ b/packages/services/cdn-worker/src/index.ts @@ -192,8 +192,13 @@ const handler: ExportedHandler = { }, }); + const { corsify, preflight } = itty.createCors(); + const router = itty .Router() + // Handles all OPTIONS and preflight requests. + // https://github.com/kwhitley/itty.dev/blob/v4.x/src/routes/itty-router/cors/%2Bpage.md#preflight-middleware + .all('*', preflight) .get( '/_health', () => @@ -205,23 +210,29 @@ const handler: ExportedHandler = { // Legacy CDN Handlers .get('*', handleRequest); - try { - return await router.handle(request, sentry.captureException.bind(sentry)).then(response => { - if (response) { - return response; - } + return ( + router + .handle(request, sentry.captureException.bind(sentry)) + .then(response => { + if (response) { + return response; + } - sentry.addBreadcrumb({ - message: 'No response from router', - }); + sentry.addBreadcrumb({ + message: 'No response from router', + }); - return createResponse(analytics, 'Not found', { status: 404 }, 'unknown', request); - }); - } catch (error) { - console.error(error); - sentry.captureException(error); - return new UnexpectedError(analytics, request); - } + return createResponse(analytics, 'Not found', { status: 404 }, 'unknown', request); + }) + .catch(error => { + console.error(error); + sentry.captureException(error); + return new UnexpectedError(analytics, request); + }) + // Adds the appropriate CORS headers to any Response. + // https://github.com/kwhitley/itty.dev/blob/v4.x/src/routes/itty-router/cors/%2Bpage.md#corsify + .then(corsify) + ); }, };