会话cookie似乎没有设置android / phonegap

时间:2012-06-23 18:52:45

标签: android cordova

我正在尝试让我的Android 4.0应用程序接受来自Node.Js express服务器的cookie,使用mongoose-auth进行身份验证。当我发布到我的登录api的帖子时,我可以看到使用Poster发送的set-cookie标题,但我不认为它正在存储。我尝试使用jquery cookie插件,但在尝试阅读时我收到null。但是当我检查api中的请求时,我能够访问会话数据。有没有人有任何示例代码,说明他们如何使用phonegap在Android中存储cookie,还要检查cookie是否存储在应用程序中?

以下是我的端点,我能够从另一个端点会话数据。

app.post('/api/login', function(request, response){
User.authenticate(request.body.email, request.body.password, function(err, userdoc)     {
    if (userdoc){
        //console.log(request.session);

        request.session.test = "hope this works";
        User.findOne({email : request.body['email']}, ['name'], function (err, user){
            if(!err){
                console.log("name %s", user);
                request.session.user = user;
                response.json({success:true});
            } else{
                console.log(err);
            }

        });
    }
    else {
        response.json({success:false});
    }
});
});

但是当我尝试使用jquery插件读取cookie时,我得到了null。

alert($.cookie('connect.sid'));

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

我认为 document.cookie null 的原因是它具有远程域名,而来自PhoneGap / Cordova应用的javascript位于文件:/// android_asset /网络/

您的ajax请求符合跨域请求的条件。

这是默认的Cookie行为。

您可以通过XHR对象和来自响应的标头从ajax请求访问cookie,或者您可以在服务器上编写代理页面,将cookie呈现为可以通过PhoneGap / Cordova javascript读取的页面主体。

同时检查this

答案 1 :(得分:3)

Serverside Cookies(如安全令牌)有一个HttpOnly标志。 出于安全原因,JavaScript(document.cookie)无法访问带有此标志的Cookie。