如何读取Next 14在server.js中设置的API路由中的cookie

问题描述 投票:0回答:1

在我的 Next 14 应用程序的 server.js 文件中,我有:

    // Middleware to extract tenant from subdomain
    server.use((req, res, next) => {
        const hostname = req.hostname;
        const subdomain = hostname.split('.')[0]; // Assumes format `tenant.domain.com`
        res.cookie('tenant', subdomain, {
            httpOnly: false,
            path: '/',
            secure: true,
            sameSite: 'strict',
            domain: `.localhost:${port}`,
        });
        next();
    });

我正在尝试通过 API 路径访问该 cookie

import { NextApiRequest, NextApiResponse } from 'next';
import { NextResponse } from 'next/server';
import Cookies from 'js-cookie';

type NextApiRequestWithTenant = NextApiRequest & { tenant: string };

export async function GET(req: NextApiRequestWithTenant, res: NextApiResponse) {
    // Assuming middleware adds tenant to the request object
    const tenant = Cookies.get('tenant');
    console.log('[TENANT API]', Cookies);
    return NextResponse.json({ tenant, data: 'some data' });
}

但是我得到了一个空的对象来存放我的饼干。

我已经验证在 server.js 中间件上设置了 cookie,但我不确定为什么我无法在 API 路由上访问该 cookie。

next.js cookies
1个回答
0
投票

修复了它,我试图使用客户端 cookie 库访问服务器 cookie, 将我的 API 路线更改为:

import { NextApiRequest, NextApiResponse } from 'next';
import { NextResponse } from 'next/server';

type NextApiRequestWithTenant = NextApiRequest & { tenant: string };

export async function GET(req: NextApiRequestWithTenant, res: NextApiResponse) {
    // access cookie and get tenant
    const tenantCookie = req?.cookies?._parsed?.get('tenant').value;
    return NextResponse.json({ tenant: tenantCookie, data: 'some data' });
}

© www.soinside.com 2019 - 2024. All rights reserved.