我只想嘗試基本方法來設置cookie並在請求頭中顯示。當使用Express 4.x的res.cookie時,請求標頭無法獲取cookie。
前端只是一個帶有用戶名和密碼文本輸入的基本html表單,使用POST方法傳輸數據。
下面是基於express的代碼。
服務器剛剛接收req.body,然後將其設置爲與域cookie:本地主機:1338 /鹼
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也是空對象{}。
但如果我只是用簡單的演示,它可以工作,例如:
router.get('/', function (req, res) {
res.cookie('name', 'test');
});
一兩件事,我覺得跟快遞麻煩的是,只有一個res.send()
,res.redirect()
.. 。可以作爲默認發送它會自動添加頭,否則,它會出現錯誤:發送後無法設置標頭。 有人說加return
可以解決這個問題,但是我失敗了,所以想怎麼添加,誰能給個完整的演示?
對於'發送後無法設置標題'問題,它與cookie無關,應該是一個新問題。 – shaochuancs