【问题标题】:Javascript setting cookie not working on Web ServerJavascript设置cookie在Web服务器上不起作用
【发布时间】:2020-11-23 15:43:31
【问题描述】:

您好,我只是一个初学者,我正在设置一个 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);

谁能帮帮我?

【问题讨论】:

  • 它是您开发的客户端、女巫服务器语言编程的代码?

标签: javascript html cookies


【解决方案1】:

客户端设置和获取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")

如果您想通过请求将它们发送到服务器: cookies是header中的子键,每个请求都可以发送headers。

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

【讨论】:

  • 谢谢,但是我不能使用node.js,还有其他方式吗?
  • 可以,cookie 是 header 对象的子键。在 ['Cookie'] 键下,我曾经喜欢它,但后来搬到了 cookie-parser,设置起来很容易,主要像客户端一样,但比客户端更难
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
  • 2021-01-09
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
相关资源
最近更新 更多