17 lines
586 B
TypeScript
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;
|
|
}
|
|
}
|