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

标签 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);
    }
);  

为了响应登录请求,我的服务器发回了一个 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/

相关文章:

javascript - 如何设计带有内部 float 的 div 以水平扩展以允许所有内部 float div 适合?

java - 使用 Jquery/Javascript 的 Spring 表单选择选择/单击事件

visual-studio - VS 2017 RC找不到cordova工具

java - 在java代码中使用savedInstanceState来保存可重用的值

android - 在 Android 浏览器中压缩的背景图像

jquery - Angular2 和 jQuery : How to call component level function?

javascript - Ionic - navigator.geolocation 返回空错误对象

java - cordova 插件添加外部 .aar 文件(不是 .jar)

android - 隐藏在android中使用 Action View 打开的url

android - 安卓模拟器4.0以上版本无法显示图片?