Javascript 未存储SetCookie标头

Javascript 未存储SetCookie标头,javascript,node.js,api,express,cookies,Javascript,Node.js,Api,Express,Cookies,我目前正在制作一个web应用程序,API使用node/express.js,前端使用Vue.js 对于身份验证,我设置了一个JWT并通过cookie(HttpOnly)发送值。 “SetCookie”在Chrome/Firefox调试器的响应请求中,但显然它没有存储在任何地方! 当我尝试发出需要cookie的请求时,请求头不包含任何cookie。我真的不明白为什么:/。 经过一些研究,我认为这是因为我在使用localhost,所以我将服务器移动到云端,并通过修改hosts文件为前端设置了一个假域

我目前正在制作一个web应用程序,API使用node/express.js,前端使用Vue.js

对于身份验证,我设置了一个JWT并通过cookie(HttpOnly)发送值。 “SetCookie”在Chrome/Firefox调试器的响应请求中,但显然它没有存储在任何地方! 当我尝试发出需要cookie的请求时,请求头不包含任何cookie。我真的不明白为什么:/。 经过一些研究,我认为这是因为我在使用localhost,所以我将服务器移动到云端,并通过修改hosts文件为前端设置了一个假域,但仍然不起作用

以下是响应请求的示例:

在服务器上设置cookie:

res.cookie('token', token, {
     path: '/',
     domain: '.shareinfo.io',
     httpOnly: true, 
     maxAge: 86400000 // 24h
});
如果有人有想法或解决方案,那就太好了

谢谢各位,


阿尔维雷

最后在我的电脑上敲了几下脑袋,在论坛上研究之后,我发现了这个问题

我忽略了客户端请求的凭据,认为它对身份验证不重要,但这是一个巨大的错误

事实上,凭据包括cookie,因此,如果在向服务器/API发出请求时未将凭据设置为“true”,则所有返回的cookie都将被忽略。您必须在服务器和客户端上授权凭据

最后的代码是将这个选项变量添加到我的POST请求中:(withVue.js

//请求选项(CORS)
变量选项={
标题:{
},
凭据:正确
};
//发出HTTP请求:
这是。$http.post(,有效负载,选项)。然后((响应)=>{
//成功
},(回应)=>{
//错误
});

我也有这个问题,差不多一个星期了,我发现将credential设置为true应该可以解决这个问题。如果您正在使用Vue,请使用拦截器,这样您就不需要为每个请求调用它

Vue.http.interceptors.push((request, next) => {
    request.credentials = true;
    next();
});
Vue.http.interceptors.push((request, next) => {
    request.credentials = true;
    next();
});