| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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)$).*)",
- ]
- };
|