mirror of
https://github.com/Heretek-AI/ompweb.git
synced 2026-11-07 10:56:00 -10:00
28 lines
975 B
TypeScript
28 lines
975 B
TypeScript
function canonicalOrigin(value: string): string | null {
|
|
try {
|
|
return new URL(value).origin;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function getRequestOrigin(request: Request): string | null {
|
|
const requestUrl = new URL(request.url);
|
|
const host = request.headers.get("host");
|
|
return host ? canonicalOrigin(`${requestUrl.protocol}//${host}`) : requestUrl.origin;
|
|
}
|
|
|
|
/** Reject browser cross-site API requests while preserving non-browser clients. */
|
|
export function isApiRequestOriginAllowed(request: Request): boolean {
|
|
const origin = request.headers.get("origin");
|
|
const fetchSite = request.headers.get("sec-fetch-site");
|
|
if (!origin) return fetchSite !== "cross-site";
|
|
|
|
const requestOrigin = getRequestOrigin(request);
|
|
return requestOrigin !== null && canonicalOrigin(origin) === requestOrigin;
|
|
}
|
|
|
|
export function shouldCheckApiRequestOrigin(request: Request): boolean {
|
|
return request.headers.has("origin") || request.headers.has("sec-fetch-site");
|
|
}
|