import type { NextRequest } from 'next/server'
import { NextResponse } from 'next/server'
export function middleware(request: NextRequest) {
if (
request.nextUrl.pathname.startsWith('/headers/') ||
request.nextUrl.pathname.endsWith('dynamic_api_headers')
) {
// Clone the request headers and set a new header `x-hello-from-middleware1`
const requestHeaders = new Headers(request.headers)
requestHeaders.set('x-sentinel', 'hello')
requestHeaders.set('x-sentinel-path', request.nextUrl.pathname)
requestHeaders.set(
'x-sentinel-rand',
((Math.random() * 100000) | 0).toString(16)
)
return NextResponse.next({
request: {
// New request headers
headers: requestHeaders,
},
})
}
const response = NextResponse.next()
if (
request.nextUrl.pathname.startsWith('/cookies/') ||
request.nextUrl.pathname.endsWith('dynamic_api_cookies')
) {
response.cookies.set('x-sentinel', 'hello', {
httpOnly: true,
sameSite: 'strict',
maxAge: 60 * 60 * 24 * 7, // 1 week
path: '/',
})
response.cookies.set('x-sentinel-path', request.nextUrl.pathname, {
httpOnly: true,
sameSite: 'strict',
maxAge: 60 * 60 * 24 * 7, // 1 week
path: '/',
})
response.cookies.set(
'x-sentinel-rand',
((Math.random() * 100000) | 0).toString(16),
{
httpOnly: true,
sameSite: 'strict',
maxAge: 60 * 60 * 24 * 7, // 1 week
path: '/',
}
)
}
return response
}