我正在尝试让我的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'));
非常感谢任何帮助。
答案 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。