Intereting Posts

Как включить сторонние файлы 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?

Solutions Collecting From Web of "Как включить сторонние файлы cookie в Phonegap и Android 3.2?"

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

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

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