无法使用请求在浏览器中设置Cookie,并在NodeJS中表示模块

我有一个客户端和服务器节点快速写入。 客户端使用请求模块与服务器进行通信,服务器会将响应发送回客户端。 在服务器代码中,我将Cookie发送回客户端。 但是我无法在浏览器中看到cookie。 在客户端req.cookies中给出{}

服务器代码:

var express = require('express'); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser()); app.get('/test-cookie', function(req, res) { res.cookie('abc', 'xyz').send('Cookie is set'); }); app.listen(9000); 

客户代码:

 var express = require('express'); var request = require('request'); var cookieParser = require('cookie-parser'); var app = express(); app.use(cookieParser()); app.get('/', function(req, res) { request({ url: 'http://localhost:9000/test-cookie', method: 'GET' }, function(error, response, body) { if (error) { res.send({ msg: error }); } else { if (200 == response.statusCode) { console.log(req.cookies); } } }); }); app.listen(7000); 

客户端浏览器首次打到7000 api将不会包含任何cookie,因此req.cookies将会logging{} ,因此我们必须在res设置cookie以供客户端浏览器发送其余请求的cookie。

解决scheme (客户端代码):

 if (200 == response.statusCode) { // For first request it will be empty {} console.log(req.cookies); /* fetching the cookie from the response header * and setting in res to be set in the browser */ var c = response.headers['set-cookie']; res.set('set-cookie',c[0]); res.send('Done'); } 

说明 :你正在做的是试图从req中获取不包含任何cookie的cookie。 您从9000 api获得的response对象将包含cookie。 因此,您必须将cookie设置为response客户端浏览器的res

response.cookies是设置cookie,如果你想从响应对象获取cookie,你将不得不依赖于response.headers ['set-cookie']