SetCookie头未存储。

3
我正在使用node/express.js作为API和Vue.js作为前端制作Web应用程序。 在身份验证方面,我设置了JWT并通过cookie(HttpOnly)发送值。 "SetCookie"在Chrome/Firefox调试器中的响应请求中,但显然没有存储在任何地方! 当我尝试进行需要cookie的请求时,请求标头不包含任何cookie。我真的不明白为什么 :/。 经过一些研究,我认为这是因为我正在本地主机上工作,所以我将我的服务器移动到云端,并通过修改hosts文件为前端设置了一个虚假域名,但它仍然无法正常工作。 以下是响应请求的示例: 响应标头 在服务器上设置cookie:
res.cookie('token', token, {
     path: '/',
     domain: '.shareinfo.io',
     httpOnly: true, 
     maxAge: 86400000 // 24h
});

如果有人有想法或解决方案,那就太好了!谢谢,问候,Alvyre。
2个回答

2

终于,经过我在电脑上的一些思考和论坛上的研究,我找到了问题所在。

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

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

因此,我的POST请求的最终代码是添加此选项变量:(使用 Vue.js

//Request options (CORS)
    var options = {
        headers: {
        },
        credentials: true
    };

//Make your HTTP request:
    this.$http.post(<url>, payload, options).then((response) => {
        //success
    }, (response) => {
        //error
    });

1
我有这个问题已经快一个星期了,后来发现将凭据设置为true就可以解决问题。如果你使用Vue,请使用拦截器,这样你就不需要每次请求时都调用它。
Vue.http.interceptors.push((request, next) => {
    request.credentials = true;
    next();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接