【问题标题】:Session cookies appear not be set with android/phonegap会话 cookie 似乎未使用 android/phonegap 设置
【发布时间】:2012-06-23 18:52:45
【问题描述】:

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

我们将不胜感激。

【问题讨论】:

  • 这个问题还存在吗?
  • 你找到解决办法了吗?

标签: android cordova


【解决方案1】:

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

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

这是默认的 cookie 行为。

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

同时检查this

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2015-02-26
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多