2012-10-09 6 views
6

Ich benutze YouTrack für unser Tracking-System. Youtrack wird mit einem Rest-Webservice geliefert, den Sie aufrufen können, um Informationen vom System zu erhalten. Ich habe Probleme, autorisiert zu werden und werde ständig verboten.Erhalten Antwort Header Jquery Ajax Post Set-Cookie

Ich mache meine Post zu ihrem Login, und ich bekomme die "Login ok" Respone, und wenn ich eincheck Firebug kann ich sehen, dass die Header richtig eingestellt sind, aber der Cookie wird nicht erstellt. Dafür muss ich den Wert aus dem Response-Header Set-Cookie holen.

Der Beitrag sieht so aus.

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

     // do something 

     }); 

Und die Antwort und Anfrage sieht so aus.

Response-Header:

HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: YTJSESSIONID = 91541168A3E0FF9BBB02A8D427D70127; Pfad =/ jetbrains.charisma.main.security.PRINCIPAL = NjVLODRiZTMzNTMyZmI3ODRjNDgxMjk2NzVmOWVmZjNhNjgyYjI3MTY4YzBlYTc0NGIyY2Y1OGVlMDIzMzdjNTpyZXN0VXNlcg; Ablauf = Mi, 09-Okt-2013 09:47:48 GMT; Pfad =/ Cache-Steuerung: No-Cache, No-Store, No-Transformation, Muss-Revalidierung Access-Control-Allow-Origin: a.domain.com Zugriffssteuerung-Erlauben-Anmeldeinformationen: true Inhalt- Type: application/xml; charset = UTF-8 Transfer-Encoding: chunked Datum: Di, 9. Oktober 2012 09.47.48 GMT

Anfrage:

POST/rest/user/login HTTP/1.1 Host: b.eelab.se Benutzer-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv: 14.0) Gecko/201 00101 Firefox/14.0.1 akzeptieren: / Accept-Language: sv-se, sv; q = 0,8, en-us; q = 0,5, en; q = 0,3 Accept-Encoding: gzip, deflate Anschluss : keep-alive Inhaltstyp: application/x-www-form-urlencoded; charset = UTF-8 Referer: http://intra.eelab.se/kontakt/it-vad-jobbar-vi-pa-nu/ Content-Length: 30 Herkunft: http://a.domain.com Pragma: no-cache Cache-Control: no-cache

ich den Set-Cookie-Wert muß das Cookie erstellen auf der Website. Was kann ich tun, um dies zu erreichen?

/Prost.

+0

hat für Sie meine Antwort Arbeit? Wenn ja, kannst du es als richtig markieren? –

Antwort

3

Try this:

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 

});