import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' import {handleCurrency} from "./proxy/currency"; import {handleAuth} from "./proxy/auth"; import { pathRewrite } from "./proxy/pathRewrite"; import { currencyCookieOptions } from "@/utils/constants/server"; export async function proxy(request: NextRequest) { // 找出缺失的默认 Cookie const missingCookies = handleCurrency(request); // 补齐当前请求缺失的 Cookie for (const cookie of missingCookies) { request.cookies.set(cookie.name, cookie.value); } // 将修改后的请求头转发给 Server Components let response = NextResponse.next({ request: { headers: request.headers, }, }); // 将默认 Cookie 写入浏览器 for (const cookie of missingCookies) { response.cookies.set( cookie.name, cookie.value, currencyCookieOptions, ); } // 处理 URL 重写 response = pathRewrite(request, response); // 处理认证与重定向 response = await handleAuth(request, response); return response; } export const config = { matcher:[ // 匹配到的不经过proxy.ts处理 "/((?!_next|api|.*\\.(?:svg|png|jpg|jpeg|gif|webp|ico|css|js|map|woff|woff2|ttf|eot)$).*)", ] };