I (ama fazla değil, belki abarttığını) angularjs ile Cors idare edebilmek için nasıl 200 siteler üzerinde aradık. Web API sunucusu çalıştıran yerel bir makinemiz var. Veri için API'yi arayan bir istemci geliştiriyoruz. İstemciyi sunucudan çalıştırırken, hiç sorun değil. Bunu farklı bir alandan çalıştırdığımızda, verileri almaya ve boş bir yanıt almaya çalışırken kırmızı bir 200 yanıt alıyoruz. İşte bazı kod:angularjs CORS Sorunlar
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;
}
};
});
Ben de $ http kullanarak bu denedi ama aynı yanıt (veya bunların eksikliği) almak:
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) {
}
};
});
Sadece kadar hizmet veriyor url göz tarayıcıdaki json, verileri tükürür. Sunucuda, önceki ifademden açıkça anlaşılan çapraz alan kaynaklarına izin veriyoruz. Eğer ben başlıklarını uygulamak am bkz myApp.config içinde geçersiz kılar gibi Hatta bu göreve
3 gün ... şimdi denetleyicisi ... hayır fark doğrudan koyarak çalıştılar.
Bu konuda yardımcı olmaktan çok DAHA FAZLASI. Şimdiden teşekkürler.
Yani GET isteğiniz başarısız oluyor?Lütfen istek ve cevap başlıklarını gösterin. Chrome'daki ağ sekmesini açıp üstbilgiler bölümüne her şeyi dahil etmeniz en kolay olacak. –
Çapraz boşluk üstbilgilerini ve Chrome'daki devingenlerde XHRRequest'i gözden geçirirseniz Seçenekler el sıkışmasını görebiliyor musunuz (örneğin, –