Spaces:
Configuration error
Configuration error
| import { NextResponse } from 'next/server' | |
| import type { NextRequest } from 'next/server' | |
| export function middleware(request: NextRequest) { | |
| const response = NextResponse.next() | |
| const { pathname } = request.nextUrl | |
| // Add security nonce for inline scripts (if needed in future) | |
| // const nonce = crypto.randomUUID() | |
| // response.headers.set('x-nonce', nonce) | |
| // Add Timing-Allow-Origin for Web Vitals measurement | |
| response.headers.set('Timing-Allow-Origin', '*') | |
| // Prevent clickjacking on sensitive pages | |
| if (pathname.startsWith('/dashboard') || pathname.startsWith('/settings')) { | |
| response.headers.set('X-Frame-Options', 'DENY') | |
| } | |
| // Set cache headers for public static-ish pages | |
| if (pathname === '/about' || pathname === '/pricing' || pathname === '/terms' || pathname === '/privacy') { | |
| response.headers.set('Cache-Control', 'public, s-maxage=3600, stale-while-revalidate=86400') | |
| } | |
| return response | |
| } | |
| export const config = { | |
| matcher: [ | |
| /* | |
| * Match all request paths except: | |
| * - _next/static (static files) | |
| * - _next/image (image optimization) | |
| * - favicon.ico (favicon) | |
| * - public folder static files | |
| */ | |
| '/((?!_next/static|_next/image|favicon.ico|logos|sw.js|.*\\..*$).*)', | |
| ], | |
| } | |