node.js - Express cookie session 不会保留在 POST 请求中

标签 node.js session cookies express

我有一个 AngularJS 客户端,使用 $http() 函数将 POST 表单数据发送到 Express 服务器。我希望服务器在客户端中设置一个 cookie 来保存用户的电子邮件地址。这就是我要存储的全部内容,因此我不需要更强大的服务器端 session 。我只是使用 cookie-session 模块。

问题: Cookie 未保留在客户端中。来自同一客户端的后续请求显示空 session 变量。

我已经看到了example here我在设置 cookie 后使用 req.session.save() ,但它仍然不起作用。

服务器代码:

// server.js

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var cookieSession = require('cookie-session')
var methodOverride = require('method-override');

// Configuration
app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); 
app.use(methodOverride('X-HTTP-Method-Override'));

var express = require('express');
var app = express();

// Cookies
app.use(cookieParser());

app.use(cookieSession({
    name: 'session', // what should this name match?
    resave: true,
    saveUninitialized: true,
    keys: ['key1', 'key2']  // what do these values need to match?
}));

app.use(function(req, res, next) {
    // Create a cookie.
    console.log("Session user [before set]: %j", req.session);
    req.session.mycookie = "sample data"; // simplified example for illustration
    console.log("Session user [after set]: %j", req.session);
    // Save session cookie
    req.session.save();
});

app.listen(3000);

来自同一客户端的每个请求都会给出输出:

Session user [before set]: {}
Session user [after set]: {"mycookie":"sample data"}

客户端的后续测试显示 cookie 并未持久存在。我什至使用 Firefox 的“View Cookies”插件来检查是否创建了任何 cookie,也没有创建任何 cookie。

<强>1。为什么我的 cookie 没有保留?我是 Express 新手,所以我可能会遗漏一些明显的东西。

<强>2。我是否使用了正确的参数来创建 cookieSession? 我不确定 keysname 应该是什么。 cookie-session documentation对此含糊其辞,我在其他地方找不到更好的文档。

最佳答案

事实证明解决方案很简单!我现在意识到我需要在浏览器对服务器的初始请求中包含端口号(我确实在 JavaScript 代码中包含了端口号。)

即使没有端口号,浏览器也可以获取初始请求,因为同一台计算机上的另一个 Web 服务器(不是我的 Express 服务器)正在为该请求提供服务。

只需将端口号添加到浏览器的地址栏即可。当然,然后我需要在服务器上添加另一个 Express 路由来处理站点的默认页面。此后,cookie 就按预期工作了。

希望这个答案能够帮助其他 Express 新手。

关于node.js - Express cookie session 不会保留在 POST 请求中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33589749/

相关文章:

c# - 我正在尝试编写 WebApi 代码以使用 POST 请求将图像文件发送到 Node.js

javascript - 每次我尝试运行 NPM 安装终端时都会抛出几个错误

php - session ??如何显示用户行?

PHP cookie 问题,在 Firefox 中有效,在其他浏览器中无效

javascript - 为什么 Node.js 函数接受对象作为参数?

javascript - 无法使用 Cheerio 从 <div> Node 蜘蛛获取信息

asp.net-mvc - 使所有 Controller 无 session 的全局开关

c# - 如何同时使用 session 将 GridView 的选定值传递到另一个页面

ios - 在没有 cookie 的情况下打开 iOS web View

node.js - Express.js 的 cookie 解析器中间件在哪里存储其数据?