aboutsummaryrefslogtreecommitdiff
path: root/packages/astro/src/core/routing/request.ts
blob: f7e917a53cde16ed9f165d413204cbd2a8013872 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
 * Utilities for extracting information from `Request`
 */

// Parses multiple header and returns first value if available.
export function getFirstForwardedValue(multiValueHeader?: string | string[] | null) {
	return multiValueHeader
		?.toString()
		?.split(',')
		.map((e) => e.trim())?.[0];
}

/**
 * Returns the first value associated to the `x-forwarded-for` header.
 *
 * @param {Request} request
 */
export function getClientIpAddress(request: Request): string | undefined {
	return getFirstForwardedValue(request.headers.get('x-forwarded-for'));
}