我正在尝试在本地计算机上使用webservice并使用AngularJS
$ http。通过浏览器一切正常,我收到了正确的JSON
响应。
但是使用AngularJS
$ http我收到404错误,但是,找到了处理程序并且正在生成响应。
FrontEnd:
$http.get('http://localhost:8080/apartments.json').
success(function(data){
$scope.apartments = data;
}).
error(function(data, status){
alert("Error "+ status);
});
后端:
@Controller
public class ApartmentsController {
@RequestMapping(value = "/apartments", method = RequestMethod.GET)
public @ResponseBody List<ApartmentEntity> getAll(){
ApartmentEntity apartmentEntity = new ApartmentEntity();
apartmentEntity.setName("test");
apartmentEntity.setPrice(1000);
return Arrays.asList(apartmentEntity);
}
}
正确映射Servlet。
你能否建议出现什么问题?
答案 0 :(得分:1)
问题是Angular默认尝试使用CORS,因为这是从一个服务器加载到另一个服务器上运行的REST服务的一个页面的ajax请求尝试。
尝试使用CORS的方式是使用默认标头发出GET,触发浏览器执行“飞行前”OPTIONS
请求。
此飞行前自动OPTIONS
请求是供浏览器获取服务器支持的方法列表,这是CORS的第一步。
因此404来自此OPTIONS
请求。
在Angular中看到这个issue,似乎在最近的版本中修复了它,因为它引起了用户的很多问题。另请参阅触发修复的original issue。
在本地开发的情况下,您始终可以在同一服务器中部署这两个应用程序,并解决问题。
如果在生产中需要在不同的服务器上运行前端/后端,然后通过像nginx / Apache这样的公共前端服务器代理这些服务器,或者打开CORS,请参阅enable-cors.org。