Problemas do AngularJS CORS

Eu pesquisei mais de 200 sites (talvez exagerando, mas não muito) sobre como lidar com cors com angularjs. Temos uma máquina local executando um servidor de API da web. Estamos desenvolvendo um cliente que solicita dados da API. Ao executar o cliente a partir do servidor, recebemos dados sem problemas. Quando o executamos de um domínio diferente, recebemos uma resposta vermelha 200 ao tentar buscar dados e uma resposta em branco. Aqui está algum código:

var myApp = angular.module('Project', ['ngResource']);

myApp.config(function($routeProvider){
    $routeProvider.
        when('/new', {templateUrl:'templates/new.html', controller:'EditProjectController'}).
        when('/mobile', {templateUrl:'templates/mobile.html', controller:'ProjectController'}).
        when('/it', {templateUrl:'templates/it.html', controller:'ProjectController'}).
        when('/writing', {templateUrl:'templates/writing.html', controller:'ProjectController'}).
        when('/all', { templateUrl: 'templates/all.html' }).
        when('/login', { templateUrl: 'partials/_login.html' }).
        otherwise({ redirectTo: '/all' });
});
myApp.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);



myApp.controller('ProjectController', 
function myApp($scope, $http, projectDataService, userLoginService) {
    $http.defaults.useXDomain = true;
    $scope.loadProject = function(){
        projectDataService.getProject(function(project){
            $scope.project = project;
            })


    };
    $scope.loadProject();
}

);

myApp.factory('projectDataService', function ($resource, $q) {
var resource = $resource('http://webapiserver/api/:id', { id: '@id' });
return {
    getProject: function () {
        var deferred = $q.defer();
        resource.query({ id: 'project' },
            function (project) {
                deferred.resolve(project);
            },
            function (response) {
                deferred.reject(response);
            });

        return deferred.promise;
    },
    save: function (project) {
        var deferred = $q.defer();
        project.id = 'project/9';
        resource.save(project,
            function (response) { deferred.resolve(response); },
            function (response) { deferred.reject(response); }
            );
        return deferred.promise;
    }
};
});

Eu também tentei isso usando $ http, mas eu recebo a mesma resposta (ou falta dela):

myApp.factory("projectDataService", function ($http) {

return {
    getProject: function (successcb) {
        $http.get("http://webapiserver/api/project").
        success(function (data, status, headers, config) {
            successcb(data);
        }).
        error(function (data, status, headers, config) {

    }
};
});

Quando eu apenas navego para o URL que está servindo o json no navegador, ele cospe os dados. No servidor, estamos permitindo origens entre domínios, o que é aparente pela minha declaração anterior. Como você pode ver estou implementando as substituições de cabeçalhos no myApp.config eu até tentei colocá-lo diretamente no meu controlador ... não faz diferença ...

3 dias agora nessa tarefa.

Ajuda com isso é mais do que apreciado. Desde já, obrigado.

questionAnswers(4)

yourAnswerToTheQuestion