我已經搜索了超過200個網站(可能誇大,但不是太多)如何能夠與angularjs處理cors。我們有一臺運行Web API服務器的本地機器。我們正在開發一個調用API數據的客戶端。當從服務器運行客戶端時,我們收到的數據沒有問題。當我們從不同的域中運行它時,我們會在嘗試獲取數據和空白響應時收到紅色200響應。下面是一些代碼:AngularJS CORS問題
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;
}
};
});
我也嘗試過這種使用$ HTTP,但我得到了相同的反應(或缺乏):
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) {
}
};
});
當我瀏覽到提供了網址瀏覽器中的json會將數據吐出。在服務器上,我們允許跨域起源,這在我以前的陳述中很明顯。正如你可以看到我在myApp.config中實現頭部覆蓋,我甚至嘗試將它直接放在我的控制器中...沒有區別...
3天現在在這個任務上。
幫助與此相比,不勝感激。提前致謝。
那麼你的GET請求失敗了?請顯示請求和響應的標題。如果您只是在Chrome上打開網絡標籤並在標題部分包含所有內容,這將是最簡單的。 –
如果您在Chrome瀏覽器中查看devtools中的XHRRequest,例如 –