2012-10-09 21 views
6

Używam YouTrack do naszego systemu śledzenia. Youtrack posiada serwis internetowy, który można wywołać, aby uzyskać informacje z systemu. Mam problem z uzyskaniem autoryzacji i cały czas jest ona zabroniona.Uzyskaj nagłówek odpowiedzi jquery ajax Post Set-Cookie

Wykonuję mój post na ich login i otrzymuję odpowiedź "login ok", a jeśli sprawdzę firebuga, zobaczę, że nagłówki są ustawione poprawnie, ale plik cookie nie zostanie utworzony. W tym celu muszę uzyskać wartość z nagłówka odpowiedzi, Set-Cookie.

Post wygląda następująco.

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

     // do something 

     }); 

Odpowiedź i prośba wygląda następująco.

nagłówki odpowiedzi:

HTTP/1.1 200 OK Server: Apache Coyote/1.1 Set-Cookie: YTJSESSIONID = 91541168A3E0FF9BBB02A8D427D70127; Ścieżka =/ jetbrains.charisma.main.security.PRINCIPAL = NjVlODRiZTMzNTMyZmI3ODRjNDgxMjk2NzVmOWVmZjNhNjgyYjI3MTY4YzBlYTc0NGIyY2Y1OGVlMDIzMzdjNTpyZXN0VXNlcg; Wygasa = środa, 09-paź-2013 09:47:48 GMT; Ścieżka =/ Kontrola pamięci podręcznej: brak pamięci podręcznej, brak zapisów, brak transformacji, konieczność ponownej weryfikacji Kontrola dostępu-pozwól-początek: a.domena.com Access-Control-Allow-Credentials: true Content- Typ: application/xml; charset = UTF-8 transfer-Encoding: pakietowego Data: Wed, 09 paź 2012 09:47:48 GMT

Zapytanie:

POST/reszta/użytkownik/login HTTP/1.1 Host: b.eelab.se Użytkownik-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv: 14.0) Gecko/201 00101 Firefox/14.0.1 Accept: / Accept-Language: sv-SE, sv; q = 0.8, en-us; q = 0.5, en; q = 0.3 Accept-Encoding: gzip, deflate Connection : 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 Pochodzenie: http://a.domain.com Pragma: no-cache Cache-Control: no-cache

muszę wartość Set-Cookie, aby utworzyć plik cookie na stronie. Co mogę zrobić, aby to osiągnąć?

/Pozdrawiam.

+0

zrobił moją pracę odpowiedź dla Ciebie? Jeśli tak, możesz zaznaczyć to poprawnie? –

Odpowiedz

3

Spróbuj tego:

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 

});