2017-09-06 1 views
1

Ich versuche, nicht reagierende UI nach Sitzungszeiten zu beheben. Ajax-Anfragen schlagen fehl, weil HTTP 302 zur Anmeldeseite umgeleitet wird - ajax error ist Could not find root <ajax-response> element.Wie repariert man nicht reagierende Benutzeroberflächen (fehlgeschlagene Ajax-Anrufe), wenn die Sitzung im Apache-Wicket abläuft?

Ich habe mit Ajax-Fehler-Ereignis abonniert:

Wicket.Event.subscribe('/ajax/call/failure', function(attrs, jqXHR, textStatus, jqEvent, errorThrown) { 
    handleAjaxCallFailure(attrs, jqXHR, textStatus, jqEvent, errorThrown); 
}); 

Aber ich eine vernünftige Art und Weise nicht finden können HTTP-Antwort, Antwortcode oder andere HTTP-Header zu erhalten. Ich habe auch versucht:

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) { 
    handleAjaxError(event, jqXHR, ajaxSettings, thrownError); 
}); 

Aber das ist überhaupt nicht feuern. Ich benutze Apache Wicket 7.6.0. Gibt es eine andere Möglichkeit, Benutzer zur Anmeldeseite zu zwingen?

Antwort

0

Es muss ein Fehler in der Zeile sein.

In der Regel wird Wicket eine richtige Ajax-Antwort (das XML) mit einem einzelnen Element in <redirect>../the/path/to/login</redirect> zurückgeben und wicket-ajax-jqeury.js wird es verarbeiten und die Weiterleitung vornehmen.

Darüber hinaus gibt es möglicherweise einen Antwortkopf mit dem Namen Ajax-Location, den Wicket auf die gleiche Weise behandelt.

Überprüfen Sie die Antwortheader und den Hauptteil. Füge sie auch hier ein!

+0

Ich glaube, Wicket wird nicht einmal die Anfrage bekommen, weil Frühling Sicherheitsfilter herausfinden wird, dass Sitzung ungültig ist und deshalb Browser HTTP 302 mit leeren Körper und Redirect Standort auf Login-Seite zeigt. – viliam

+2

Danke @ martin-g, ich habe eine benutzerdefinierte Implementierung von LoginUrlAuthenticationEntryPoint mit angepasster Weiterleitungsstrategie für Wicket-Ajax-Aufrufe entwickelt. – viliam

Verwandte Themen