SvelteKit:cookies.set() 在表单操作中不起作用

mue*_*ell 4 javascript cookies jwt svelte sveltekit

我正在尝试使用 SvelteKit 实现基于 JWT 的用户会话,并且主要遵循其网站上给出的表单操作的解释: https: //kit.svelte.dev/docs/form-actions

+页面.svelte

<form method="POST" action="?/signIn">
  <input type="text" name="name" />
  <input type="password" name="password" />
  <button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

+page.server.svelte

import { fail, redirect } from "@sveltejs/kit";
import { signIn } from "$lib/server/database";

export const actions = {
  signIn: async ({ cookies, request }) => {
    const data = await request.formData();

    const name = data.get("name");
    const password = data.get("password");

    if (!name || !password) {
      return fail(400);
    }

    try {
      cookies.set("jwt", await signIn(name, password));
    } catch (error) {
      return fail(400);
    }

    throw redirect(303, "/");
  },
};
Run Code Online (Sandbox Code Playgroud)

我已经测试了我signIn在此处导入和使用的方法,并且在使用正确的凭据调用时它确实返回一个令牌。到目前为止,一切都很好。但是,我注意到我在开发人员工具中没有看到任何 cookie。看起来这个cookies.set()电话根本没有做任何事情。我想将返回的 JWT 设置为 cookie,以便我可以验证我的用户,那么我做错了什么?

mue*_*ell 5

如果其他人遇到此问题:虽然 cookie 按使用 Chrome 时的预期设置,但在 Safari 中却没有。我通过将该secure选项设置为 false 解决了这个问题,尽管 SvelteKit 文档声明这是在本地主机上自动完成的。