MotorSignal-App/website/lib/request-origin.ts

17 lines
586 B
TypeScript

import { NextRequest } from 'next/server';
export function hasValidOrigin(request: NextRequest): boolean {
const origin = request.headers.get('origin');
const host = request.headers.get('x-forwarded-host')?.split(',')[0].trim()
?? request.headers.get('host');
const protocol = request.headers.get('x-forwarded-proto')?.split(',')[0].trim()
?? request.nextUrl.protocol.slice(0, -1);
if (!origin || !host) return false;
try {
const parsed = new URL(origin);
return parsed.protocol === `${protocol}:` && parsed.host === host;
} catch {
return false;
}
}