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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我正在使用$ 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?

提问于
用户回答回答于

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

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

用户回答回答于

尝试使用我的服务器进行身份验证时,我遇到了类似的问题。我反而诉诸使用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);

扫码关注云+社区