我使用$ getJSON命中Phonegap和Android下的node.js端点。代码看起来像这样
$.getJSON(
serverURL + "/login?callback=?",
"playerId=" + playerId + "&pwd=" + pwd,
function(data){
theCallbackFunction.call(null, JSON.parse(data));
},
function(jqXHR, textStatus, errorThrown) {
alert('error ' + textStatus + " " + errorThrown);
}
);
为了响应登录请求,我的服务器发送回会话cookie。如果在浏览器中启用了“第三方Cookie”,则此cookie仅在后续AJAX请求中被接受并返回。我发现较旧的Android设备(例如2.2)默认允许这样做,但新的设备(3.2)不允许这样做。
是否可以强制Phonegap为我的Android应用程序启用第三方Cookie?
答案 0 :(得分:1)
尝试使用我的服务器进行身份验证时遇到了类似的问题。我改为使用localStorage。请参阅下面的代码或here。
var store = window.localStorage,
request = {
url: {SERVER_URL},
headers : {
Cookie: store.getItem('session')
},
complete: function (jqXHR, status){
if (status != 'success') {
console.log('ajax status: failure');
} else if (store.getItem('session') != null) {
console.log('ajax status: session exists');
} else {
console.log('ajax status: saving cookie');
var header = jqXHR.getAllResponseHeaders();
var match = header.match(/(Set-Cookie|set-cookie): (.+?);/);
if (match) {
session = match[2];
store.setItem("session", session);
}
}
}
}
$.ajax(request);
在上面,我正在检查localStorage变量'session',如果它存在,它将发送存储的cookie。如果它不存在,它将采用服务器在标题中发送的'set-cookie'参数,匹配相关部分并将其存储在localStorage的'session'变量中。
答案 1 :(得分:0)
Phonegap不支持cookie抽象。从来没有真正需要,因为已经有应用程序/插件。此外,它旨在结束手机/设备的功能,而不是浏览器。但是,您可以使用jQuery插件执行此操作。