2014-05-06 28 views
5

Używam AngularJS v1.2.16 w moim interfejsie. Stworzyłem prostą obsługę:AngularJS CORS nie wysyłają wszystkich plików cookie z poświadczeniami, ale jQuery wysyła

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

Kiedy próbuję listę miejsc w moim kontrolera uzyskać:

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

kątowa nie wysyła ciasteczka z prośbą, a ja nie mogę dostać listę witryn.

Ale kiedy wysłać taki wniosek przez jQuery:

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

Cookies wysłane z prośbą i mogę uzyskać listę witryn.

Powiedz mi, proszę, gdzie jest mój błąd?

Odpowiedz

8

Ponieważ usługa $resource jest fabryka $http ty spróbuj ustawić wartość domyślną true withCredentials twoich $httpProvider w app config?

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

Nawiązując do kątowego docs, składnia wydaje się poprawne dla withCredentials.

+0

Ta odpowiedź rozwiązała to dla mnie! Nie mogłem go uruchomić, dopóki nie byłby domyślny. – Tillman32

Powiązane problemy