客户端无法从获取响应中接收Cookie

时间:2019-02-17 12:04:34

标签: javascript node.js ajax vue.js fetch

我有一个node.js服务器,它应该在客户端的cookie中设置一个令牌。它在Postman中设置令牌,但在我的应用程序中没有。

我尝试在Vue的获取方法中添加“相同来源”和“包含”凭据。它没有帮助。

包括前端vue.js部分

checkLogin(context) {
    const token = document.cookie;
    console.log("Cookie: " + token); //returns "Cookie: "
    fetch(PROXY_URL + BASE_URL + "checkLogin", {
      method: "POST"
    })
      .then(r => r.json())
  .then(d => {
    console.log(d);
    return d;
  })
  .then(d => {
    context.commit("setIsLoggedIn", d.auth);
  });
},
login(context, data) {
fetch(PROXY_URL + BASE_URL + "login", {
  method: "POST",
  body: JSON.stringify(data),
  headers: {
    Accept: "application/json",
    "Content-Type": "application/json"
  }
})
  .then(r => console.log(r))
}

包括后端node.js部分

//check login
app.post('/checkLogin',(req,res ) => {
    passport.authenticate('jwt', { session: false }, (err, 
decryptToken, jwtError) => {
        if(jwtError != void(0) || err != void(0)) {
            res.send({auth: false});
        }else{
            res.send({auth: true });
        };
        req.user = decryptToken;

    })(req, res);
});


//login
app.post('/login',async (req, res) => {
    try{
    let user = await db.findUser(req.body);
    if(user != void(0) && bcrypt.compareSync(req.body.password, user.password)){

        const token = createToken({id: user._id, username: user.username});

        res.cookie('token', token, {
            httpOnly: false
        });

        res.status(200).send("You are logged");

    } else
        res.status(400).send({message: "User not exist or password not correct"});

    }catch(e){
        console.error("Error: login: ,", e);
        res.status(500).send({message: "some error"});
    }
});

它没有在cookie中设置令牌,但应该设置。

0 个答案:

没有答案