Я использую $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, но я не против использовать что-то еще, пока оно работает на стороне клиента (браузера).