【发布时间】:2017-08-29 16:29:38
【问题描述】:
我只是想尝试设置 cookie 并在请求头中显示的基本方法。
前端只是一个带有用户名和密码文本输入的基本html表单,使用POST方法传输数据。
下面是基于 express 的代码。
服务器只接收req.body,然后将其设置为cookie,域:localhost:1338/base
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:1338', path: '/base' });
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);
运行app.js后,请求头明显有set-cookie值。但无法将其放入请求标头,并且 req.cookies 是空对象 {},即使在刷新 web 之后也是如此。
但如果我只是使用最简单的演示,它可以工作,例如:
router.get('/', function (req, res) {
res.cookie('name', 'test');
});
还有一点,我觉得express的问题是只能发一个res.send(),res.redirect()... 默认会自动加head,否则会报错:Can' t 在发送后设置标题。
有人说添加return可以解决这个问题,但是我失败了,所以想知道怎么添加,谁能给个完整的demo?
【问题讨论】:
-
Can't set headers after they are sent的问题,和cookie无关,应该是新问题。