我试图从Angular-JS页面调用Java后端的REST服务。我可以成功获取GET数据,但无法调用@POST资源。
例如,在Java后端这里是我的RESTful服务方法 -
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public User create(User user) {
User usr1 = new User();
usr1.setId(3);
usr1.setFirstName("John");
usr1.setLastName("Paul");
return usr1;
}
在AngularJS部分,这里是服务工厂:
var app = angular.module('app', ['ngResource']);
app.factory('UsersFactory', function ($resource) {
return $resource('http://localhost:8080/demoApp/service/users', {}, {
query: { method: 'GET', isArray: true },
create: { method: 'POST'}
})
});
这是AngularJS控制器:
app.controller('userCreationCtrl', ['$scope', 'UsersFactory', '$location',
function ($scope, UsersFactory, $location) {
$scope.createNewUser = function () {
UsersFactory.create($scope.user);
}
}]);
错误显示在Chrome浏览器的Javascript控制台中 -
XMLHttpRequest cannot load http://localhost:8080/demoApp/service/users. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.
答案 0 :(得分:0)
您的问题是因为在服务休息时您可以允许CORS,因此您必须在服务器端更改中更改或添加一些配置,或者更简单的方法是将html代码放在同一位置url是你的服务器,localhost:8080(你的html代码在localhost:63342)
在您的服务器端,您必须添加" Access-Control-Allow-Origin = *"或类似的东西