首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Node.js HTTP服务器获取和设置单个Cookie

使用Node.js HTTP服务器获取和设置单个Cookie
EN

Stack Overflow用户
提问于 2010-08-03 13:39:57
回答 10查看 347.4K关注 0票数 181

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

代码语言:javascript
复制
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放入其中。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-08-05 03:38:37

没有快速的函数访问来获取/设置cookie,所以我想出了以下技巧:

代码语言:javascript
复制
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存储到cookies对象中,并且您需要在写入头部时设置cookie。

票数 221
EN

Stack Overflow用户

发布于 2012-07-21 00:46:20

如果您像许多node.js开发人员一样使用express库,那么有一种更简单的方法。有关更多信息,请查看Express.js文档页面。

上面的解析示例可以工作,但是express提供了一个很好的函数来处理这个问题:

代码语言:javascript
复制
app.use(express.cookieParser());

要设置cookie,请执行以下操作:

代码语言:javascript
复制
res.cookie('cookiename', 'cookievalue', { maxAge: 900000, httpOnly: true });

要清除cookie,请执行以下操作:

代码语言:javascript
复制
res.clearCookie('cookiename');
票数 128
EN

Stack Overflow用户

发布于 2015-10-01 05:29:12

RevNoah给出了最佳答案,建议使用Express的cookie parser。但是,这个答案现在已经3年了,已经过时了。

使用Express,您可以按如下方式读取cookie

代码语言:javascript
复制
var express = require('express');
var cookieParser = require('cookie-parser');
var app = express();
app.use(cookieParser());
app.get('/myapi', function(req, resp) {
   console.log(req.cookies['Your-Cookie-Name-Here']);
})

并使用以下内容更新您的package.json,替换为适当的相对最新的版本。

代码语言:javascript
复制
"dependencies": {
    "express": "4.12.3",
    "cookie-parser": "1.4.0"
  },

herehere描述了更多的操作,比如设置和解析cookie

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3393854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档