2016-11-21 1 views
0

hier So ist die Situation:Wie auf Credential-Plätzchen in XHR CArray

Hintergrund: Ich bin ein Chrome-App (nicht Erweiterung) mit Hilfe von Javascript zu entwickeln, um eine Website zu machen XHR aufruft.

Auf Login, pose ich alle Formulardaten (Benutzername, Passwort etc.) auf die Login-URL wie diese

var xhr = new XMLHttpRequest(); 

xhr.open("POST", 'http://somewebsite/Login.aspx', true); 
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhr.withCredentials = true; 
xhr.onload = function (e) { 

    console.log('on load of login request'); 
    console.log(xhr); 

    xhr.open('GET', 'http://somewebsite/STS/sts_default.asp', true); 
    xhr.withCredentials = true; 
    xhr.responseType = 'document'; 
    xhr.onload = LogicFunction; 

    xhr.send(); 

}; 
var params = "txtUsername=user&txtPassword=password" 
xhr.send(params); 

Was ich davon ausgehen, dass, sobald die Anmeldeanforderung verarbeitet bekommen, während ich verwende das gleiche xhr-Objekt sollte die Cookies verwenden, die aus der vorherigen Antwort festgelegt wurden.

Während eigentlich was passiert ist, ist die l/login.aspx gibt mir eine 302 Redirect. Und auf dieser Umleitung verwendet es die Anmeldungscookies. während die Xhr, die ich innerhalb des Onload-Blockes initiierte, keine Cookie-Zugangsdaten hat, werden diese vom Server rausgeschmissen.

Was muss ich tun, um diese Cookie-Anmeldedaten zu übertragen?

Danke

+0

Ich habe ein paar Mal über diese Frage kommen, wenn Anwendungen Aufbau mit Websites/Interaktion Web-Services-Anmeldungen in Visual Basic .NET und PHP erfordert. In diesen Situationen musste ich die Weiterleitung verhindern, die Antwortheader lesen und die Header "Set-Cookie" speichern. In Javascript kann ich mich nicht erinnern, wie genau das gemacht wird, aber ich würde annehmen, dass die Grundidee dieselbe ist. Abfangen des HTTP 3XX-Response-Codes, Lesen der Header, Speichern der Cookies und Senden eines GET an den Location-Header von 3XX Redirect zusammen mit den Cookies. Dennoch bin ich nicht 100% sicher, dass dies mit XHR möglich ist. – SpencerD

+0

Danke Spencer, Sie haben Recht. Ich denke, es ist nicht möglich, die Cookies in XHR einzustellen. Aber ich wäre sehr interessiert zu wissen, ob es mit einer Technik weitergehen könnte. Zum Beispiel, wenn ich mit der Chrome-Erweiterung arbeite, habe ich solche Probleme überhaupt nicht. – TypingPanda

+0

Ich habe von anderen Ressourcen überprüft, dass Sie das Standardverhalten der XHR-Umleitung nicht überschreiben können. Wie hast du das erreicht? Irgendein Hinweis, bitte? – TypingPanda

Antwort

0

Ja Leute. Die Art, wie ich die Kekse aufbewahrt habe, ist richtig. Der Browser (zumindest in Chrome) hilft, alle Cookies, die vom Server gesetzt werden, zu behalten. Das einzige Problem, das ich habe, war eine 302-Umleitung, die tatsächlich durch eine Sitzungsübertragung gelöst wurde, die für dieses Problem spezifisch ist. Also, wenn Sie diese Antwort lesen, kann ich sagen, wie ich getan habe, um Cookie-Informationen in der Frage zu bewahren, ist richtig und danke Ihnen noch für alle, die sich Mühe und Gedanken zu dieser Frage gemacht haben.

Dank