AngularJS $ http gibt den Statuscode 0 von einer fehlgeschlagenen CORS-Anforderung zurück

Okay, ich habe mich darum gekümmert. Grundsätzlich verwenden wir $ http-Anfragen, die domänenübergreifend sind. Unser Server erlaubt die Domain und wenn eine Anfrage 200 zurückgibt, ist alles in Ordnung. Immer wenn unser Server jedoch einen Fehler zurückgibt (500, 401), denkt Angular, dass es sich um ein CORS-Problem handelt.

Ich habe die Antwort mit Fiddler getestet, um zu überprüfen, ob mein Server 500 zurückgibt, aber Angular drosselt darauf.

Hier ist die Anfrage:

       var params = {
            url: "fakehost/example",
            method: 'GET',
            headers: {
                "Authorization": "Basic encodedAuthExample"
            }
        };

       $http(params).then(
            function (response) { // success 

            },
            function (error) { // error 
                 // error.status is always 0, never includes data error msg
            });

Dann werde ich in der Konsole folgendes sehen:

XMLHttpRequest kann fakehost / example nicht laden. In der angeforderten Ressource ist kein 'Access-Control-Allow-Origin'-Header vorhanden. Origin 'mylocalhost: 5750' ist daher nicht zugänglich.

Beim Fiedler lautet die wahre Antwort jedoch:

HTTP/1.1 500 Internal Server Error
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2014 12:18:17 GMT
Content-Length: 5683

{"errorId":null,"errorMessage":"Index was outside the bounds of the array.","errorDescription":"Stack trace here"}

Ich bin auf AngularJS v1.2.16

Antworten auf die Frage(1)

Ihre Antwort auf die Frage