2015-04-17 6 views
6

Ich benutze AngularJS, aber ich habe das gleiche Problem mit JQuery und in einfach JavaScript gefunden. Wenn der entfernte Server, auf den ich zugreife, Access-Control-Allow-Origin setzt, werden entweder die Methoden success oder error aufgerufen.Wie wird kein Access-Control-Allow-Origin-Fehler erfasst?

Wenn es keine Access-Control-Allow-Origin gibt, wird keiner von diesen aufgerufen und ich kann nur den Fehler in der Konsole sehen. Gibt es eine Möglichkeit, den No Access-Control-Allow-Origin Fehler in meinem JavaScript-Code zu erfassen?

Und nur für den Fall, dass Sie an einem Anwendungsfall interessiert sind, ich baue ein Front-End für PyPi https://pypi.python.org/ Dort können Sie die Informationen über Pakete im JSON-Format erhalten. (z.B. https://pypi.python.org/pypi/dspy/json). Diese Anfragen setzen den Access-Control-Allow-Origin, aber wenn ich eine Anfrage für ein Paket sende, das nicht auf dem Server ist (zB https://pypi.python.org/pypi/dspyz/json) bekomme ich keine Access-Control-Allow-Origin und damit bekomme ich nichts aufgerufen in meinem JavaScript-Code.

aktualisiert

Nach einigen weiteren Versuchen ich, dass die error Methode es nur eine Ausnahme ausgelöst durch mit dem Code zu einem gewissen Problem habe ich, und dass mir angerufen herausgefunden wurde die Irre führen.

+1

Natürlich wird 'error' aufgerufen. – zeroflagL

Antwort

3

Dies ist aus Sicherheitsgründen nicht möglich. Sniffing des lokalen Netzwerks des Benutzers wäre möglich.

Weitere Informationen here.

Link Credits zu Eithedog für seinen Kommentar.

+0

Bedeutet das, dass der JavaScript-Code nicht weiß, dass die Anfrage abgelehnt wurde? Wird es nur still beantwortet, als wäre es eine Auszeit? – szabgab

+1

Ja, ich habe es gerade noch einmal probiert. Sie erhalten genau die gleiche Art von Fehlerobjekt, wenn Sie 'xhr.onerror' abhören, ob es sich um ein' timeout' oder ein 'No Access-Control-Allow-Origin' handelt. Die einzige Möglichkeit, diese Fehler auf unsichere Weise zu unterscheiden, besteht darin, die seit dem Start der Anforderung vergangene Zeit zu verfolgen. –

Verwandte Themen