Получение cookies с помощью Ajax. Кросс-доменные запросы

Phonegap/Cordova Функция для отправки запроса GET/POST с передачей Cookies

var httpRequest = null;

var ajax = {
init: function(){
/*if(!httpRequest){
return new XMLHttpRequest();
}
if(httpRequest){
return httpRequest;
}*/
return new XMLHttpRequest();
},
send: function(url,method,args,cookies,async,_callback){
loading('show');
var q=ajax.init();
q.open(method,url,async);
q.onreadystatechange=function(){
//
console.log('STATUS REQUEST: '+this.readyState+"|"+this.status + '[args]: ' +args);
if(this.readyState==4 && this.status==200) {
if(_callback != null) _callback(this.responseText);
console.log("REQUEST TEXT: \n"+ this.responseText);
//console.log(q.getAllResponseHeaders);
//saveCookie(q);
}
if(this.status==0){
alert("Something was wrong :/");
}
};
if (cookies) {
q.setRequestHeader('Cookie',cookies);
}
/*Content-Type application/x-www-form-urlencoded; charset=UTF-8
Accept *\/*
X-Requested-With XMLHttpRequest*/
if(method=='POST') {
q.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //<-- Имитируем сабмит формы
//или
//q.setRequestHeader('Content-type','X-Requested-With XMLHttpRequest'); //<X-Requested-- Правильный request... 

q.setRequestHeader('Connection', 'close');
q.send(args);
} else {
q.send(null);
}
loading('hide');
};




//Пример запроса
ajax.send(url,'POST',post_data,null,true,this._parse_content);

function _parse_content(data){
alert(data);
}


//Можно и так
ajax.send(api_url,'POST','do=search',null,true,function(data){
alert(data);
});








//А теперь главный трюк ;) как получить куки и сохранить их для дальнейшего использования
function saveCookie(x){

 /*var contType = x.getResponseHeader ("Content-Type");
            var contLength = x.getResponseHeader ("Content-Length");
            var lastMod = x.getResponseHeader ("Last-Modified");
            console.log ("Content-Type: " + contType + "\n" +
                   "Content-Length: " + contLength + "\n" +
                   "Last-Modified: " + lastMod);*/

var header_c = x.getResponseHeader('Set-Cookie');
if(header_c !== null){
//alert('posle: '+header_c);
header_c = decodeURIComponent(header_c); //RU_Symbol

//alert(header_c);

var res = header_c.split(';');


res.forEach(function(value, index, res) {
var temp = value.split('=');
//alert("Split: " + temp[0] + ' - ' + temp[1]);
localStorage.setItem(temp[0], temp[1]);
});
}
//console.log(localStorage.length);
};

Комментариев нет:

Отправить комментарий