4

我正在尝试让我的 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'));

任何帮助将不胜感激。

4

2 回答 2

4

我相信您的document.cookie的原因是它具有远程域名,而您来自 PhoneGap/Cordova 应用程序的 javascript 位于file:///android_asset/www/

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

这是默认的 cookie 行为。

您可能可以通过 XHR 对象和响应的标头从 ajax 请求访问 cookie,或者您可以在服务器上编写代理页面,将 cookie 呈现到页面正文中,然后可以通过 PhoneGap/Cordova javascript 读取。

还要检查这个

于 2012-07-09T12:02:17.093 回答
3

服务器端 Cookie(如安全令牌)具有 HttpOnly 标志。出于安全原因,JavaScript (document.cookie) 无法访问带有此标志的 Cookie。

于 2013-09-08T08:47:27.673 回答