42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { env } from "cloudflare:workers";
|
|
|
|
function allowedOrigin(request: Request) {
|
|
const origin = request.headers.get("origin");
|
|
if (!origin) return null;
|
|
const portalOrigin = String(
|
|
(env as unknown as { KOC_PORTAL_URL?: string }).KOC_PORTAL_URL ?? "",
|
|
).replace(/\/$/, "");
|
|
return origin === portalOrigin || origin === "http://localhost:3000"
|
|
? origin
|
|
: null;
|
|
}
|
|
|
|
export function withPartnerCors(request: Request, response: Response) {
|
|
const origin = allowedOrigin(request);
|
|
if (origin) {
|
|
response.headers.set("Access-Control-Allow-Origin", origin);
|
|
response.headers.set("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
|
|
response.headers.set(
|
|
"Access-Control-Allow-Headers",
|
|
[
|
|
"Content-Type",
|
|
"X-KOC-Task",
|
|
"X-KOC-Claim",
|
|
"X-KOC-Delegation",
|
|
"X-KOC-Distribution",
|
|
"X-KOC-File-Name",
|
|
"X-KOC-Upload-Kind",
|
|
"X-KOC-OCR-Exposure",
|
|
"X-KOC-OCR-Views",
|
|
"X-KOC-OCR-Status",
|
|
].join(", "),
|
|
);
|
|
response.headers.append("Vary", "Origin");
|
|
}
|
|
return response;
|
|
}
|
|
|
|
export function partnerOptions(request: Request) {
|
|
return withPartnerCors(request, new Response(null, { status: 204 }));
|
|
}
|