2014-05-06 4 views
5

Ich benutze AngularJS v1.2.16 in meinem Frontend. Ich habe einen einfachen Dienst erstellt:AngularJS CORS senden nicht alle Cookies mit Anmeldeinformationen, aber jQuery senden

app.provider('Site', function() { 

    var apiServer = 'http://api.example.com'; 

    this.$get = ['$resource', function ($resource) { 
    var site = $resource(apiServer + '/sites/:action:id', {}, { 
     query: { 
     withCredentials: true 
     }, 
     checkDomain: { 
     method: 'POST', 
     withCredentials: true, 
     params: { 
      action: 'checkDomain' 
     } 
     }, 
     save: { 
     method: 'PUT', 
     withCredentials: true 
     } 
    }); 

    return site; 
    }]; 
}); 

Wenn ich versuche Liste von Websites in meinem Controller zu bekommen:

app.controller('SitesCtrl', ['$scope', 'Site', function ($scope, Site) { 
    $scope.sites = Site.query(); 
}]); 

Angular Cookies nicht mit Anfrage schickt, und ich kann nicht Liste erhalten von Websites.

Aber wenn ich gleiche Anfrage von jQuery senden:

$.ajax({ 
    type: 'GET', 
    url: 'http://api.example.com/sites', 
    xhrFields: { 
    withCredentials: true 
    }, 
    success: function (data) { 
    console.log(data); 
    } 
}); 

Plätzchen mit Anfrage geschickt, und ich kann Liste von Websites erhalten.

Sag mir bitte, wo ist mein Fehler?

Antwort

8

Da der $resource Service ist eine Fabrik von $http haben Sie versuchen, den withCredentials Standardwert auf true Ihrer $httpProvider in Ihrer App Config einstellen?

.config(function ($httpProvider) { 
    $httpProvider.defaults.withCredentials = true; 
} 

Mit Bezug auf die Winkel docs, Ihre Syntax scheint für die withCredentials richtig.

+0

Diese Antwort löste es für mich! Ich konnte es nicht zum Laufen bringen, außer es war ein Standard. – Tillman32