我正在使用 $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);
}
);
为了响应登录请求,我的服务器发回了一个 session cookie。如果在浏览器中启用了“第三方 Cookie”,则此 cookie 仅在后续 AJAX 请求中被接受和返回。我发现旧的 Android 设备(例如 2.2)默认允许这样做,但新设备(3.2)不允许。
是否可以强制 Phonegap 为我的 Android 应用程序启用第三方 Cookie?
最佳答案
我在尝试对我的服务器进行身份验证时遇到了类似的问题。我转而使用 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。如果不存在,则取服务端发送的headers中的'set-cookie'参数,匹配相关部分,保存在localStorage的'session'变量中。
关于android - 如何在 Phonegap 和 Android 3.2 下启用第三方 Cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358588/