如何在Phonegap和Android 3.2下启用第三方Cookie?

我正在使用$ 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); } ); 

为了响应login请求,我的服务器发回一个会话cookie。 如果在浏览器中启用了“第三方Cookie”,则只有在后续的AJAX请求中才会接受此cookie。 我发现较旧的Android设备(例如2.2)允许这个默认,但新的(3.2)不这样做。

是否可以强制Phonegap为我的Android应用程序启用第三方Cookie?

Solutions Collecting From Web of "如何在Phonegap和Android 3.2下启用第三方Cookie?"

我尝试使用服务器进行身份validation时遇到了类似的问题。 我反而诉诸使用localStorage。 请参阅下面或这里的代码。

  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); 

在上面,我正在检查localStoragevariables“会话”,如果它存在,它会发送存储的cookie。 如果不存在,则需要服务器在头部发送'set-cookie'参数,匹配相关部分并将其存储在localStorage的'session'variables中。

Phonegap不支持cookie抽象。 从来没有真正需要,因为已经有应用程序/插件。 此外,它打算包装电话/设备的function,而不是浏览器。 但是,您可以使用jQuery插件来做到这一点。

https://github.com/carhartl/jquery-cookie