无法使用 Sveltekit 在服务器端设置 cookie

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

标题不言自明:从某一刻到另一刻,我无法从我的 Sveltekit 项目的服务器页面设置 cookie。

在我的页面的 +page.server.js 中,我有一个使用

set
函数设置 cookie 的操作。之后,当重新加载页面时,我尝试使用
get
函数内的
load
函数检索 cookie,但 cookie 未定义。我非常确信它根本没有设置,但我不知道为什么。

export const load = async ({ cookies }) => {
    const myCookie = cookies.get('myCookie');
}

export const actions = {
    default: async ({ cookies }) => {
        //stuff
        cookies.set('myCookie', true);
        throw redirect(303, '/');
    }
}

我指定这是我已经在其他项目中完成的程序并且它一直有效。可能是什么问题?谢谢您的帮助。

更新:

我不知道它是否有帮助,但我想指定我正在使用 Pocketbase,并且在项目的 hook.server.js 中设置了 cookie,我可以在浏览器中看到它并正常工作:

export async function handle({ event, resolve }) {
    event.locals.pb = new PocketBase('http://127.0.0.1:8090');
    event.locals.pb.authStore.loadFromCookie(event.request.headers.get('cookie') || '');

    if (event.locals.pb.authStore.isValid) {
        event.locals.user = serializeNonPOJOs(event.locals.pb.authStore.model);
    } else {
        event.locals.user = undefined;
    }

    const response = await resolve(event, {
        transformPageChunk: ({ html }) => minify(html, minification_options)
    })
    response.headers.set('set-cookie', event.locals.pb.authStore.exportToCookie({ secure: false }));

    return response
}
cookies sveltekit
1个回答
0
投票

对我有用的是添加 const isDataRequest = event.route.id == null; if (isDataRequest) 返回解析(事件); 如果是 SSR 请求,则阻止设置 cookie。

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