Hapi.js 未在浏览器中设置 Cookie

Hapi.js Cookie not being set in browser

我正在尝试使用 Hapi.js 在我的浏览器中设置 cookie。我遵循了 hapi.js 文档,并确保将 isSecure 选项设置为 false,因为我将 http 连接用于开发目的。但是,我不知道为什么我的 cookie 没有出现在 chrome 开发工具的 cookies 选项卡下。但是,我确实在“网络”选项卡下的回复 header 中看到了它。这是我的代码:

Server.js

//Set Cookie configuration
  server.state("loginCookie", {
    ttl: null,
    isSecure: false, //Must set to false for now. It will not work if true on a http connection
    isHttpOnly: true,
    encoding: "base64json",
    clearInvalid: true, //Want to remove invalid cookies
    strictHeader: true,
  });

user_routes.js

{
    method: "POST",
    path: "/signup",
    options: {
      validate: {
        payload: Joi.object({
          username: Joi.string().alphanum().min(4).max(16).required(),
          password: Joi.string().min(4).required(),
        }),
      },
      pre: [{ method: verifyUniqueUser }],
      auth: false,
    },

    handler: SignUpHandler,
  },

signUp.js

export const SignUpHandler = async (req, h) => {
  try {
    let user = new UserModel(req.payload);

    //Hash Password first before storing in user Model
    const { password, username } = req.payload;
    const hash = await bcrypt.hash(password, 8); 

    user.password = hash;

    await user.save();

    let token = jwt.sign(
      { id: user._id, username: username },
      process.env.SECRET_KEY,
      { algorithm: "HS256", expiresIn: "1h" }
    );

    console.log(token);

    h.state("loginCookie", token);

    return "Signed Up";
  } catch (error) {
    throw Boom.badRequest(error);
  }
};

向我的 hapi 服务器发出请求的我的前端部分

const makeAccount = async () => {
      console.log(credentials);
      await axios.post("http://localhost:3001/signup", credentials);
    };

知道我可能做错了什么吗?

我发现为了让我的客户端发送和接收 cookie,我必须在我的 axios 请求中添加 withCredentials 属性 并将其设置为 true。如果你这样做并且你也遇到了 CORS 错误,请确保你的服务器路由 cors 选项的凭据 属性 也设置为 true。