AngularJS $ http devuelve el código de estado 0 de la solicitud CORS fallida

De acuerdo, he buscado todo esto. Básicamente estamos usando $ http request que SON solicitudes de dominio cruzado. Nuestro servidor permite el dominio y cuando una solicitud devuelve 200, todo está bien. Sin embargo, cada vez que nuestro servidor devuelve un error, 500, 401, lo que sea, Angular piensa que es un problema CORS.

Depuré la respuesta con Fiddler para verificar que mi servidor IS devuelva 500, pero Angular se ahoga.

Aquí está la solicitud:

       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
            });

Luego, en la consola, veré esto:

XMLHttpRequest no puede cargar fakehost / example. No hay encabezado 'Access-Control-Allow-Origin' presente en el recurso solicitado. Por lo tanto, el origen 'mylocalhost: 5750' no tiene acceso permitido.

Sin embargo, en fiddler, la verdadera respuesta es:

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"}

Estoy en AngularJS v1.2.16

Respuestas a la pregunta(1)

Su respuesta a la pregunta