首页 > 开发 > NodeJS > 正文

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

2017-09-08 17:11:16  来源:网友分享

我是一个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?

解决方案

问题找到了,在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);