Spring RESTful Web Service + AngularJS HTTP 404错误

时间:2014-02-19 16:40:00

标签: java spring angularjs

我正在尝试在本地计算机上使用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。

你能否建议出现什么问题?

1 个答案:

答案 0 :(得分:1)

问题是Angular默认尝试使用CORS,因为这是从一个服务器加载到另一个服务器上运行的REST服务的一个页面的ajax请求尝试。

尝试使用CORS的方式是使用默认标头发出GET,触发浏览器执行“飞行前”OPTIONS请求。

此飞行前自动OPTIONS请求是供浏览器获取服务器支持的方法列表,这是CORS的第一步。

因此404来自此OPTIONS请求。

在Angular中看到这个issue,似乎在最近的版本中修复了它,因为它引起了用户的很多问题。另请参阅触发修复的original issue

在本地开发的情况下,您始终可以在同一服务器中部署这两个应用程序,并解决问题。

如果在生产中需要在不同的服务器上运行前端/后端,然后通过像nginx / Apache这样的公共前端服务器代理这些服务器,或者打开CORS,请参阅enable-cors.org