Angularjs 在跨请求持久化会话变量时遇到困难

Angularjs 在跨请求持久化会话变量时遇到困难,angularjs,session,express,express-session,Angularjs,Session,Express,Express Session,我的应用程序当前正在从我的文件系统中打开,并向cloud 9上托管的服务器发出请求。每当我从同一页提交信息时,我都会从同一页提出两个请求 一个请求是创建新资源,第二个请求是上载文件。在完成第一个请求后,我设置了一个会话变量,该变量对于成功处理第二个请求至关重要,因为它用于身份验证,但是当我执行第二个请求时,该变量不存在 我用angular发出请求,我觉得这是相关的,因为应该存储在客户机上的会话id占位符应该在第一个请求之后出现,但它不是,我怀疑angular处理请求的方式可能会冲突 为了获得会话

我的应用程序当前正在从我的文件系统中打开,并向cloud 9上托管的服务器发出请求。每当我从同一页提交信息时,我都会从同一页提出两个请求

一个请求是创建新资源,第二个请求是上载文件。在完成第一个请求后,我设置了一个会话变量,该变量对于成功处理第二个请求至关重要,因为它用于身份验证,但是当我执行第二个请求时,该变量不存在

我用angular发出请求,我觉得这是相关的,因为应该存储在客户机上的会话id占位符应该在第一个请求之后出现,但它不是,我怀疑angular处理请求的方式可能会冲突

为了获得会话id,我下载了应用程序的脚本文件,同时从磁盘加载了所有其他内容,我确实获得了一个sid

编辑可能不是将我的应用程序url保留在png上的最佳决定

在客户端,这就是我执行请求的方式

$http.post('www.myurl.com/firstBatch',app).success(function(data)
        {
            var res  = data;
            if(res == 'true')
            {
                sendSecondBatch($scope, function(formData)
                {
                    var tok = encodeURIComponent($scope.application.title);

                    $http.post('www.myurl.com/secondbatch', formData, {
                        headers : {'Content-Type' : undefined},
                        transformRequest : angular.identity

                    }).success(function(data){
                        //data
                        if(data == 'true')
                        {
                           //both of the request's succeeded 
                        }

                    })

                });
            }
        });
在服务器端,我有一个处理一个请求的路由,另一个路由处理第二个请求

function handleFirst()
{
   //logic
   req.session.myarray =['myname'];

}
位于不同的路线上

function handleSecond()
{
    var myname = req.sesssion.myarray[0];
}

myname未定义,表明会话未持久化

我想知道这是否与当前正在从文件系统打开的应用程序有关。这样做会发生奇怪的事情,通常是以安全的名义。会话是由服务器端还是客户端管理?@DeoWalk会话是通过connect redis store由服务器端管理的。@KevinB我也怀疑可能是这样,因为在我执行请求后,资源>cookies>服务器名下没有连接会话id。每次打开页面时,我都会继续从服务器加载脚本文件,并获得会话id,但变量仍然不存在。我现在真的想避免把我所有的文件上传到服务器上,然后从那里下载,我想先测试一下我的应用程序的逻辑,你可以通过一个本地的Web服务器很容易地做到这一点。