我希望能够设置单个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放入其中。
发布于 2010-08-05 03:38:37
没有快速的函数访问来获取/设置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存储到cookies对象中,并且您需要在写入头部时设置cookie。
发布于 2012-07-21 00:46:20
如果您像许多node.js开发人员一样使用express库,那么有一种更简单的方法。有关更多信息,请查看Express.js文档页面。
上面的解析示例可以工作,但是express提供了一个很好的函数来处理这个问题:
app.use(express.cookieParser());
要设置cookie,请执行以下操作:
res.cookie('cookiename', 'cookievalue', { maxAge: 900000, httpOnly: true });
要清除cookie,请执行以下操作:
res.clearCookie('cookiename');
发布于 2015-10-01 05:29:12
RevNoah给出了最佳答案,建议使用Express的cookie parser。但是,这个答案现在已经3年了,已经过时了。
使用Express,您可以按如下方式读取cookie
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
,替换为适当的相对最新的版本。
"dependencies": {
"express": "4.12.3",
"cookie-parser": "1.4.0"
},
https://stackoverflow.com/questions/3393854
复制相似问题