So erkennen Sie, ob ein AJAX-Fehler Access-Control-Allow-Origin ist oder die Datei tatsächlich fehlt

9

Meine Frage bezieht sich NICHT darauf, wie die Access-Control-Allow-Origin-Probleme gelöst werden. Diese Fehler treten manchmal auf, wenn Anfragen ausgeführt werden, und manchmal sind die URLs veraltet. Aber ich möchte verschiedene Nachrichten für den Benutzer abhängig von den verschiedenen Fehlern drucken.

Momentan habe ich den folgenden Code:

%Vor%

Wenn Sie sich die Konsole ansehen, können Sie leicht erkennen, ob die Datei tatsächlich fehlte oder ob es sich um ein Access-Control-Problem handelte. Aber ich möchte zwei verschiedene Nachrichten an den Benutzer ausdrucken, die genau sagen, was das Problem war. Betrachtet man die Variablen im Fehlerfall: Funktion (Anfrage, Status, Nachricht) ändern sie sich nicht, beide Fälle führen zu einem Fehler 404. Gibt es noch etwas anderes, um das Problem zu lösen?

Vielen Dank im Voraus für die Aufmerksamkeit.

    
user2104806 08.04.2014, 23:01
quelle

2 Antworten

3

Ihre Browser-Konsole zeigt Ihnen

  

XMLHttpRequest kann http://www.google.com/ nicht laden. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Origin 'http://mysite.com' ist daher nicht erlaubt.

Sie können jedoch nicht mit JavaScript allein auf diese Informationen zugreifen. Wenn ein Browser eine CORS-Verletzung feststellt, wird die Header-Information als eine Angelegenheit der verwerfen Protokoll.

Eine Lösung, die funktioniert, besteht darin, die Antwortheader mit serverseitigem Code zu überprüfen und die Ergebnisse an Ihre Clientseite zurückzugeben. Zum Beispiel, wenn die Ajax-Anfrage fehlschlägt, könnten Sie dieses Skript aufrufen (nennen wir es cors.php ) und sicher wissen, ob es "Access-Control-Allow-Origin" enthält oder nicht.

Beispiel:

  

cors.php? url = http: //ip.jsontest.com
  cors.php? url = http: //www.google.com

gibt

zurück
  

Zugriffssteuerung-Erlauben-Ursprung: *
  Keine

So können Sie in Ihrem JavaScript-Code Folgendes tun:

%Vor%

Passen Sie dieses PHP-Skript für Ihre eigenen Bedürfnisse an:

%Vor%     
Drakes 30.04.2015 04:35
quelle
0

Sie sollten den Antwortheader vom Anforderungsobjekt lesen können:

var acao = request.getResponseHeader ('Zugriffssteuerung-Zulassen-Ursprung');

gibt dann den entsprechenden Fehler basierend darauf aus, ob der Header vorhanden ist und ob Ihre URL in dem Wert enthalten ist.

    
Robert Munn 08.04.2014 23:24
quelle

Tags und Links