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。
我正在尝试使用 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。