|
|
|
|
|
|
|
|
|
|
|
export const CORS_HEADERS = { |
|
'Access-Control-Allow-Origin': '*', |
|
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', |
|
'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With', |
|
'Access-Control-Max-Age': '86400', |
|
}; |
|
|
|
|
|
|
|
|
|
export function handleOptions(): Response { |
|
return new Response(null, { |
|
status: 204, |
|
headers: CORS_HEADERS |
|
}); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
export function addCorsHeaders(response: Response): Response { |
|
const newHeaders = new Headers(response.headers); |
|
Object.entries(CORS_HEADERS).forEach(([key, value]) => { |
|
newHeaders.set(key, value); |
|
}); |
|
|
|
return new Response(response.body, { |
|
status: response.status, |
|
statusText: response.statusText, |
|
headers: newHeaders |
|
}); |
|
} |
|
|
|
|
|
|
|
export async function onRequest(context: any) { |
|
|
|
if (context.request.method === "OPTIONS") { |
|
return handleOptions(); |
|
} |
|
try { |
|
const response = await context.next(); |
|
return addCorsHeaders(response); |
|
} catch (err: any) { |
|
return new Response(`${err.message}\n${err.stack}`, { |
|
status: 500, |
|
headers: CORS_HEADERS |
|
}); |
|
} |
|
} |