Sha*_*ane 42 javascript cors asp.net-web-api angularjs
我已经搜索了超过200个网站(可能夸大,但不是很多)关于如何处理角度的角色.我们有一台运行Web API服务器的本地机器.我们正在开发一个调用API来获取数据的客户端.从服务器运行客户端时,我们收到数据没问题.当我们从不同的域运行它时,我们在尝试获取数据和空白响应时得到红色200响应.这是一些代码:
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;
}
};
});
Run Code Online (Sandbox Code Playgroud)
我也尝试使用$ 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) {
}
};
});
Run Code Online (Sandbox Code Playgroud)
当我浏览到在浏览器中提供json的url时,它会吐出数据.在服务器上,我们允许跨域起源,这在我之前的声明中很明显.正如你所看到我在myApp.config中实现头文件覆盖我甚至尝试将它直接放在我的控制器中......没有区别......
现在3天就完成了这项任务.
对此的帮助不仅仅是值得赞赏的.提前致谢.
T_D*_*nzt 11
您可能需要稍微更改Web API.我遇到了同样的问题,写了一篇关于如何解决这个问题的帖子.
我使用Sinatra作为API,我不知道你用什么语言为你的webservices,但我想你可以应用它.基本上,您需要通过定义允许哪些来源和哪些HTTP方法来配置服务器以接受CORS调用.
你说你已经在服务器上启用了它,但是你做了什么?
有关更多详细信息,请参阅此文章:CORS with angular.js
| 归档时间: |
|
| 查看次数: |
56704 次 |
| 最近记录: |