使用Node.jsHTTPServer获取并设置单个Cookie

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我希望能够设置一个cookie,并且每次向nodejs服务器实例发出请求都读取该cookie。 它可以在几行代码中完成,而无需拉入第三方库?

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

只是尝试直接从nodejs.org获取上面的代码,并在其中使用cookie。

提问于
用户回答回答于

获取/设置cookie没有快速的函数访问权限,因此我想出了下面的黑客:

var http = require('http');

function parseCookies (request) {
    var list = {},
        rc = request.headers.cookie;

    rc && rc.split(';').forEach(function( cookie ) {
        var parts = cookie.split('=');
        list[parts.shift().trim()] = decodeURI(parts.join('='));
    });

    return list;
}


http.createServer(function (request, response) {

  // To Read a Cookie
  var cookies = parseCookies(request);

  // To Write a Cookie
  response.writeHead(200, {
    'Set-Cookie': 'mycookie=test',
    'Content-Type': 'text/plain'
  });
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

这将将所有cookie存储到Cookie对象中,需要在编写头部时设置cookie。

用户回答回答于

如果像许多node.js开发人员一样使用Express库,那么有一种更简单的方法。请访问Express.js文档页面。

上面的解析示例工作正常,但Express为提供了一个很好的函数来处理这个问题:

app.use(express.cookieParser());

设置cookie:

res.cookie('cookiename', 'cookievalue', { maxAge: 900000, httpOnly: true });

要清除饼干:

res.clearCookie('cookiename');

扫码关注云+社区