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

时间:2011-12-02 15:26:33

标签: android jquery cordova

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

2 个答案:

答案 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插件执行此操作。

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

相关问题