我只想尝试基本方法来设置cookie并在请求头中显示。
前端只是一个基本的html表单,用户名和密码文本输入,使用POST方法传输数据。
下面是基于express的代码。
服务器只接收req.body,然后将其设置为域名为cookie:localhost:1338 / base
cookieRouter.js:
if (commit.getAuthorIdent().getWhen().equals(aAuthor == BadAuthor))
// This was missing ------------------------------------------^
git.rm().call()
app.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后,请求标头显然有set-cookie值。但是无法将其置于请求标头中,并且req.cookies是空对象{},即使在刷新网络之后也是如此。
但如果我只使用最简单的演示,它可以工作,例如:
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);
还有一件事,我觉得快递的问题是只有一个router.get('/', function (req, res) {
res.cookie('name', 'test');
});
,res.send()
...可以发送,因为默认会自动添加头部,否则会产生错误:发送后无法设置标头。
有人说添加res.redirect()
可以解决这个问题,但我失败了,所以想知道如何添加,有人可以提供完整的演示吗?
答案 0 :(得分:2)
Cookie丢失,因为domain
属性不正确 - 'localhost:1338'
需要更改为'localhost'
。端口信息不应包含在domain
。
是的,根据浏览器开发工具的网络面板,有一个Set-Cookie
响应标头(如屏幕截图所示)。但是,如果您检查Chrome中的Application - Cookies
面板(或其他浏览器中的相应面板),您会发现:Set-Cookie
标头指定的Cookie不存在。浏览器不会存储它,也不会在以下HTTP请求中发送它。
另请注意,由于Cookie的路径为/base
,因此只有网址以/base
开头的HTTP请求才能发送Cookie。