首页 > 解决方案 > Javascript设置cookie在Web服务器上不起作用

问题描述

嗨,我只是一个初学者,我正在设置一个 Cookie 来记住一个用户。当我测试它时,只需在我的浏览器(Safari)中打开文件它就可以正常工作,但是在将它上传到我的服务器(xxxxxx.bplaced.net)后它就不再工作了。这是我的代码:

function setCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + ";domain=xxxx.bplaced.net;path=/";
}
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
        var end = document.cookie.indexOf(";", begin);
        if (end == -1) {
        end = dc.length;
        }
    }
    // because unescape has been deprecated, replaced with decodeURI
    //return unescape(dc.substring(begin + prefix.length, end));
    return decodeURI(dc.substring(begin + prefix.length, end));
}

setCookie('justacookie','testcookie',7);

谁能帮我?

标签: javascripthtmlcookies

解决方案


客户端设置和获取cookie:

//set cookies
document.cookie = "userId=jkadfa08da7f8f6a7fa";

//get cookies
function getCookieValue(name) {
     var cookies = document.cookie;
     var cookiesArray = cookies.split(';');
     var findCookie = cookiesArray.find(c => c.includes(name));
     var cookieSplit = findCookie.split('=');
     //cookieSplit[0] === name (key)
     return cookieSplit[1];
}

服务器端(Node.js)设置和获取 cookie。

首先,安装 cookie-parser 库。

像这样向您的服务器应用程序添加中间件:

const cookieParser = require('cookie-parser');
app.use(cookieParser());

然后您将可以像这样获取和设置每个 API 的 cookie:

//get cookie
req.cookies['cookieName'];

//set cookie
res.cookie("userId","jkadfa08da7f8f6a7fa")

如果您的意思是要通过请求将它们发送到服务器:cookie 是标头中的子键,每个请求都可以发送标头。

   axios.post('url', {"body":data}, {
        headers: {
            'Content-Type': 'application/json',
            'Cookie': yourcookie
        }
      }
    )

推荐阅读