express 4.x浏览器设置cookie的问题

我是一个node.js小白新手,最近研究express,有个关于cookie的问题请教下?

客户端获取不到req.cookies, 为什么啊?

var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var app = express();
var router = express.Router();

router.use(bodyParser.urlencoded({ extended: false }));
router.use(cookieParser());

router.get('/index1.html', function (req, res, next) {
    console.log(req.cookies);//为什么获取不到cookie,为空{}
    res.sendFile(__dirname + '/index1.html');

});

router.post('/index1.html', function (req, res, next) {
    res.cookie('name', req.body, {domain:'localhost:1338',path:'/'});
    res.send(req.body.username + ' : ' + req.body.password);
});

app.use('/base', router, function (req, res) {
    res.send('router page!');
});

app.listen(1338);



浏览器里面只有在响应头里面有set-cookie但是请求头里面没有cookie,刷新了也没有用。
还有一个问题,我的cookie设置而的域是 localhost:1338, path:/。但是为什么localhost:1338/base的响应头里面还是没有Set-Cookie?

图片描述

阅读 5.3k
1 个回答

问题找到了,在stackoverflow里面提了,然后别人了答案。其实很低级,就是设置cookie的时候把端口去掉,只写localhost

cookieRouter.js:

var express = require('express');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var router = express.Router();
router.use(bodyParser.urlencoded({ extended: false }));
router.use(cookieParser());

router.get('/', function (req, res) {
    res.send('this is a router base page!');
});

router.get('/index1.html', function (req, res) {
    res.sendFile(__dirname + '/index1.html');
});

router.post('/index1.html', function (req, res) {
    res.cookie('name', req.body, { domain: 'localhost', path: '/base' });//只写localhost
    res.send(req.body);
});

module.exports = router;

app.js


var express = require('express');
var app = express();
var cookieRouter = require('./cookieRouter.js');
app.get('/', function (req, res) {
    res.send('this is home page!');
});
app.use('/base', cookieRouter);
app.listen(1338);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题