2012-10-09 66 views
6

Estoy usando YouTrack para nuestro sistema de seguimiento. Youtrack viene con un servicio web de descanso al que puede llamar para obtener información del sistema. Tengo problemas para obtener la autorización y me están prohibiendo todo el tiempo.Obtener encabezado de respuesta jquery ajax post Set-Cookie

Hago mi entrada a su inicio de sesión, obtengo la respuesta "login ok", y si controlo firebug puedo ver que los encabezados están configurados correctamente, pero la cookie no se crea. Para eso necesito obtener el valor del encabezado de respuesta, Set-Cookie.

La publicación se ve así.

 $.post(youTrackLoginUrl, { login: "restUser", password: "qwerty" }, function(data, text, xhr) { 

     // do something 

     }); 

Y la respuesta y solicitud es así.

cabeceras de respuesta:

HTTP/1.1 200 OK Servidor: Apache-Coyote/1.1 Set-Cookie: YTJSESSIONID = 91541168A3E0FF9BBB02A8D427D70127; Path =/ jetbrains.charisma.main.security.PRINCIPAL = NjVlODRiZTMzNTMyZmI3ODRjNDgxMjk2NzVmOWVmZjNhNjgyYjI3MTY4YzBlYTc0NGIyY2Y1OGVlMDIzMzdjNTpyZXN0VXNlcg; Caduca = mié, 09-oct-2013 09:47:48 GMT; Ruta =/ Control de caché: no-caché, sin almacenamiento, sin transformación, debe revalidar Access-Control-Allow-Origin: a.domain.com Access-Control-Allow-Credentials: true Content- Type: application/xml; charset = UTF-8 Transfer-Encoding: fragmentada Fecha: mar, 09 de Oct 2012 09:47:48 GMT

solicitud:

de POST/descanso/usuario/login HTTP/1.1 Host: b.eelab.se User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv: 14.0) Gecko/201 00101 Firefox/14.0.1 aceptar: / Accept-Language: sv-se, sv; q = 0.8, en-us; q = 0.5, en; q = 0,3 Accept-Encoding: gzip, desinflar Conexión : keep-alive Content-Type: application/x-www-form-urlencoded; charset = UTF-8 Referer: http://intra.eelab.se/kontakt/it-vad-jobbar-vi-pa-nu/ Content-Length: 30 Origen: http://a.domain.com Pragma: no-cache Cache-Control: no-cache

necesito el valor set-cookie para crear la cookie en el sitio. ¿Qué puedo hacer para lograr esto?

/Saludos.

+0

hicieron mi trabajo respuesta para usted? Si es así, ¿puedes marcarlo como correcto? –

Respuesta

3

Prueba esto:

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

$.post(youTrackLoginUrl, { login: "restUser", password: "qwerty" }, function(data, text, xhr) { 

    data_set_cookie = data.match(/Set-Cookie:\s([^;]+);/)[1]; 
    createCookie(data_set_cookie.split("=")[0],data_set_cookie.split("=")[1],365); //sets cookie for 1 year 

});