javascript - 首次请求时未发送 cookie

标签 javascript node.js express cookies middleware

我的 server.js Express 应用程序上有以下代码:

var express = require('express');
var fallback = require('express-history-api-fallback');
var compress = require('compression');
var favicon = require('serve-favicon');
var prerenderio = require('prerender-node');
var config = require('getconfig');

var app = express();

app.use(function (req, res, next) {
    if (config.environment !== 'local') {
        res.cookie('config', JSON.stringify(config), { secure: true });
    }
    else {
        res.cookie('config', JSON.stringify(config));
    }
    next();
});

app.get('/versioncheck', function(req, res) {
    return res.json({ version: config.version });
});

app.use(compress());
app.use(prerenderio.set('prerenderToken', config.prerender_token).set('protocol', 'https'));
app.use(express.static(__dirname, { maxAge: 31536000 }));
app.use(favicon(__dirname + '/favicon.ico'));
app.use(fallback('index.html', { root: __dirname }));

const PORT = process.env.PORT || 1010;

app.listen(PORT, function () {
    console.log('Server started on port %s', PORT);
});

我用express设置的第一个中间件非常简单:它向客户端发送一个带有一些配置信息的cookie。我面临的问题是这个 cookie 不会在第一次请求时发送到客户端。对于所有后续请求,它确实工作正常。我错过了什么?

最佳答案

我前段时间也遇到过类似的问题。

在第一个请求开始时,cookie 不存在。

cookie 在请求期间发送,而不是之前。

因此,在第二个请求开始时,cookie 被设置(来自请求 1)。

关于javascript - 首次请求时未发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088549/

相关文章:

javascript - 将带有 NodeJS 循环的 json 对象复制到 JSON 文件中

javascript - 你能强制IE8识别背景大小: 100%?吗

javascript - 制作自己对象的副本而不是引用(更新后的帖子,不同的 Q)

javascript - 弹出窗口中的表单验证

javascript - Express/Node.js - 使用数据渲染页面

javascript - 模块对象的路径属性?

node.js - flutter 如何在http.get请求中传递变量

javascript - 函数中的 Mongoose 查询 promise 使代码变得丑陋

javascript - 我想从 JSON 文件中获取特定数据并将其添加到另一个 JSON 文件/变量中

javascript - 找不到自定义模块的要求路径