我正在尝试用Angular创建一个SPA。我必须使用来自不同服务器的服务。它是一个基于java的服务。这里我得到"请求的资源上不存在‘访问控制允许来源’标题"
angular.module('tableApp', [])
.config(function ($httpProvider) {
//Enable cross domain calls
$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = true;
delete $httpProvider.defaults.headers.common["X-Requested-With"];
$httpProvider.defaults.headers.common["Accept"] = "application/json";
$httpProvider.defaults.headers.common["Content-Type"] = "application/json";
//Remove the header used to identify ajax call that would prevent CORS from working
delete $httpProvider.defaults.headers.common['X-Requested-With'];
})
.controller('tableCtrl', ['$scope', '$http', '$timeout', function ($scope, $http) {
var bassURL = 'http://[server ip]:8080/ABC/resource/XYZ'
$http.get(bassURL + '/getTypes').success(function (Type) {
$scope.Type = Type;
});
}
])
请帮忙。
您的浏览器正在使用CORS协议来验证对服务的访问,以防止跨站点脚本攻击。您需要在服务器上启用CORS支持(添加Access Control Allow Origin标头,允许托管Angular站点的站点)。或者,您需要使用CORS之前的一个技巧来跨站点获取JSON,并且您的服务器需要为其提供支持。
步骤1:
验证你的angular应用程序是否真的命中了有效的URL。通过Fiddler或Postman 执行此操作
步骤2:
验证您的客户端AngularJS应用程序和服务器是否在同一URL和端口上运行。
如果您打算让它们在不同的端口/URL上运行,则需要在java应用程序上设置CORS,如其他注释中所述。
步骤3(如果使用步骤2):
指定一个附加JSON_CALLBACK参数到您的URL。
SO示例
示例