WedX - журнал о программировании и компьютерных науках

Чтение/запись файлов cookie из запроса/ответа XHR (PhoneGap/Cordova)

Я использую $http (angular) и публикую сообщения на удаленном веб-сайте, который я не контролирую.
При входе в систему он дает мне файл cookie «site_session», который я хочу прочитать. Обратите внимание, что я могу вызвать удаленный веб-сайт (междоменный), поскольку он работает на мобильном устройстве в приложении Cordova.

Я пробовал всевозможные решения, найденные в Интернете, но безуспешно.
Я использую Angular 1.3.13, поэтому $cookies после $timeout должен работать, но не работает.
Я пробовал withCredentials = true трюк, оба в $httpProvider.defaults и в самой конфигурации вызова $http: не повезло.

$cookies, кажется, умирает и сбрасывается в каждой области.

Например:

$http({
    method: 'POST',
    url: 'https://distantsite.com/login.php',
    data: 'username=test&password=test',
    headers: {
      'Accept': 'text/html',
      'Cookie': "site_session=abcd", // this will be blocked: refused to set unsafe header
      'Content-Type': 'application/x-www-form-urlencoded',
      'Access-Control-Allow-Credentials': true,
    },
    withCredentials: true,
}).success(function(response, status, headers){
    $cookies.myTest1 = 'test1';
    $log.info('cookies: ', $cookies); // Object {myTest1: "test1"} 
    $timeout(function(){
        $cookies.myTest2 = 'test2';
        $log.info('cookies after timeout: ', $cookies); // Object {myTest2: "test2"}, myTest1 has disappeared!
    });
});

Выходы:
cookies: Object {myTest1: "test1"}
cookies after timeout: Object {myTest2: "test2"}

Я не получаю никаких настоящих файлов cookie, только последний, который я установил...

У меня полностью закончились решения. Есть ли у кого-нибудь действительный работающий способ получения файлов cookie вызова удаленного (междоменного) сайта из Angular в приложении Cordova?
Если возможно, я бы хотел сохранить для этого $http, но я не против использовать что-то еще, пока оно работает на стороне клиента (браузера).


  • Что вы подразумеваете под удаленным сайтом? 03.05.2015
  • Я думаю, что OP означает заголовок Set-Cookie из ответа HTTP. Я думаю, вы можете просто разобрать заголовок. 03.05.2015
  • Удаленный сайт @NexusDuck означает не запрос локального хоста, @davidshen84, к сожалению, в заголовках нет Set-Cookie, он либо удален из соображений безопасности, либо потому, что фактически следует перенаправлению на другую страницу после успешного входа в систему, последний вызов не имеет заголовок Set-Cookie. 03.05.2015
  • Посмотрите на трафик с помощью прокси-сервера отладки http, такого как Fiddler, чтобы увидеть файлы cookie. Файлы cookie с атрибутом HttpOnly не отображаются в JavaScript. 03.05.2015
  • Я не думаю, что это проблема с JavaScript, я вижу файлы cookie с Javascript на стороне сервера nodejs. И да, я вижу файлы cookie, если отслеживаю свою сеть, но это не помогает мне получать файлы cookie в моем угловом приложении... 03.05.2015
  • После некоторых дополнительных исследований кажется невозможным получить доступ к файлам cookie в запросе XHR из мобильного веб-приложения (через Cordova). Жаль, что мне приходится использовать прокси-сервис только для этого... 03.05.2015

Ответы:


1

Я подтверждаю, что файлы cookie не управляются из объекта JavaScript XMLHttpRequest в PhoneGap/Cordova на Android, независимо от используемой платформы (так что это не проблема angular).
Кажется, это функция, а не ошибка, при которой не планируется раскрывать файлы cookie на стороне JavaScript (файлы cookie управляемы, но просто не доступны на стороне клиента JavaScript Cordova).
Кажется, на iOS есть обходной путь, но я не могу подтвердить.

Единственный обходной путь, который я нашел для Android, — это создать подключаемый модуль Cordova, который изначально выполняет вызовы HTTP (используя java.net.* на Android), предоставляя доступ к файлам cookie и передавая их обратно на сторону JavaScript.
Проверьте подключаемые модули Cordova. документация для более подробной информации: https://docs.phonegap.com/en/4.0.0/guide_hybrid_plugins_index.md.html

К счастью, плагины Cordova довольно просты в настройке и очень эффективны, поскольку вы получаете все изначально возможные функции.

06.05.2015
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]