Подтвердить что ты не робот

Как включить сторонние файлы cookie в Phonegap и Android 3.2?

Я использую $getJSON, чтобы попасть в конечную точку node.js в Phonegap и Android. Код выглядит следующим образом:

$.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 принимается и возвращается только в последующих запросах AJAX, если в браузере включены "Сторонние файлы cookie". Я обнаружил, что старые устройства Android (например, 2.2) позволяют это по умолчанию, но новые (3.2) этого не делают.

Можно ли заставить Phonegap включить сторонние файлы cookie для моего приложения Android?

4b9b3361

Ответ 1

У меня была аналогичная проблема при попытке аутентификации с моим сервером. Вместо этого я прибегал к использованию 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);

В приведенном выше примере я проверяю переменную localStorage "session", и если она существует, она отправит сохраненный файл cookie. Если он не существует, он принимает параметр set-cookie, отправленный сервером сервером, соответствует соответствующей части и сохраняет ее в переменной "session" localStorage.

Ответ 2

Телефонная связь не поддерживает абстракцию файлов cookie. Никогда не нужно было, поскольку уже есть приложения/плагины, которые делают. Кроме того, он предназначен для закрытия функциональности телефона/устройства, а не браузера. Однако вы можете сделать это с помощью подключаемого модуля jQuery.

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