2016-05-17 3 views
0

Ich mache AJAX-Anfragen (JQuery $ .ajax), um einige Inhalte auf meiner Webseite zu laden. Nach einiger Zeit ist die Benutzersitzung jedoch abgelaufen, daher muss sie erneut authentifiziert werden.CORS - Redirect auf Seite, die von zweiten erhalten wird GET

Wenn der Benutzer nicht authentifiziert ist, habe ich zwei GET-Anfragen von der Website erhalten. Eine mit der URL, die ich im AJAX angefordert habe (ok), und eine andere, die von der Firewall (?) Des Servers bereitgestellt wird, die den Fehler von CORS verursacht, da sich diese URL nicht unter demselben Server befindet.

Beispiel:

GET https://my.url.requested 302 Found  5ms 
GET https://cors.url.which.causes.error.requesting.authentication 
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://cors.url.which.causes.error.requesting.authentication?blabla. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 

Was muss ich tun, um zu der zweiten URL umleiten (die den Fehler verursacht). Weil es die URL ist, die das Authentifizierungssystem/den Bildschirm anzeigt.

Wie kann ich überprüfen, wann immer dieser Fehler in meinem Javascript auftritt, damit ich (Umleitung) umgehen kann?

+0

Ihre Seite sollte keine zufälligen Anfragen an den Server auslösen - sollte wahrscheinlich verstehen, was vor dem Backend auf der Clientseite passiert. – tyler

+0

Es ist nicht zufällig. Ich sende AJAX-Anfragen, wenn der Benutzer auf eine Schaltfläche klickt, damit er Informationen einer bestimmten Zeile anzeigen kann. Ich wollte nur wissen, ob es eine Möglichkeit gibt, eine Überprüfung auf der Client-Seite durchzuführen und sie umzuleiten. Ich sah, dass die erste GET-Anfrage in ihrem Header den Ort hat. Ich werde versuchen, diese Info zu greifen ... – mk2

+0

"ein anderer, der von der Firewall (?) Des Servers zur Verfügung gestellt wird" führte mich zu glauben, dass Sie nicht wussten, woher das kommt – tyler

Antwort

0

Es gibt einige Parameter in der Funktion $ .ajax. Es gibt zwei Möglichkeiten, dieses Problem zu umgehen:

1)

$.ajax({ 
    url: loadurl, 
    error: function(jqXHR, status, errorThrown) { 
     window.location.replace(authentication-url); 
    } 
}); 

2)

$.ajax({ 
    url: loadurl, 
}).fail(function() { 
    window.location.replace(authentication-url); 
}); 

Sie sind gleichwertig. Lesen Sie: .fail or Error: