2

我感到很困惑。我做了一个这样的快递应用程序:

$ express -s -e sessionTest

然后我稍微编辑了路线以设置会话变量,检查并删除它。我在本地机器上运行服务器,我使用的任何浏览器(Chrome、Firefox、Android Chrome、Android Dolphin)都按预期工作。但是,一旦我将其上传到 appfog,Android 上的 Chrome 就无法在页面加载时保持相同的会话。你可以自己测试一下,这是我在 appfog 上托管的应用程序:

凯尔.aws.af.cm

您来到的第一页将设置一个会话变量。该页面上有一个链接可以检查会话变量是否已设置,另一个链接可以销毁您的会话。Android 版 Chrome 永远不会报告您已设置会话变量。同样,当我的应用程序在 appfog 上时,这仅不适用于 Android 版 Chrome。无论此应用程序是否在 appfog 上,任何其他浏览器似乎都可以正常工作。

这是一个appfog错误吗?这是 Android 版 Chrome 的错误吗?这是快递还是连接错误?还是我做错了什么?

我的代码:

应用程序.js

var express = require('express')
, routes = require('./routes')
, http = require('http')
, path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.VMC_APP_PORT || process.env.PORT || 1337);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('secret'));
  app.use(express.session());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);
app.get('/session', routes.session);
app.get('/destroy', routes.kill);

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

./routes/index.js

exports.index = function(req, res){
  req.session.test = 1;
  res.render('index', { title: 'I set the session var test to 1' });
};

exports.session = function(req, res){
  if(req.session.test === 1) {
    res.render('index', {title: 'the session var test is 1! :)'});
  } else {
    res.render('index', {title: 'the session var test is not 1!!!!!! >:('});
  }
};

exports.kill = function(req, res){
  req.session.destroy();
  res.render('index', {title: 'I called session.destroy()'});
};
4

2 回答 2

3

好吧,我不知道 AppFog 有什么问题,但我创建了一个应用程序并在 Nodejitsu 上运行了这段代码,我可以确认它在 Chrome @ Android 4.1.2 中有效:http: //testforso.jit.su/

于 2013-02-13T22:20:54.777 回答
2

我有同样的问题!不知道还能尝试什么。我的应用程序在本地主机上完美运行。但是当我在 AppFog 上部署它时,注意到它的工作原理。我创建了一张票。在 AppFog 上。

就像打哈欠一样,我在 Nodejutsu 上部署了我的应用程序,它运行良好!

于 2013-02-13T23:16:51.120 回答