Java springrestfullweb服务+;AngularJS HTTP 404错误

Java springrestfullweb服务+;AngularJS HTTP 404错误,java,spring,angularjs,Java,Spring,Angularjs,我试图在本地机器上使用webservice并使用AngularJS$http。通过浏览器,一切正常,我收到正确的JSON响应。 但是使用AngularJS$http,我收到404错误,但是,找到了处理程序并生成了响应 前端: $http.get('http://localhost:8080/apartments.json'). success(function(data){ $scope.apartments = data;

我试图在本地机器上使用webservice并使用
AngularJS
$http。通过浏览器,一切正常,我收到正确的
JSON
响应。 但是使用
AngularJS
$http,我收到404错误,但是,找到了处理程序并生成了响应

前端:

$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);
    }
}
@控制器
公共类公寓控制器{
@RequestMapping(value=“/plants”,method=RequestMethod.GET)
public@ResponseBody List getAll(){
ApartmentEntity ApartmentEntity=新的ApartmentEntity();
apartmentEntity.setName(“测试”);
apartmentEntity.setPrice(1000);
返回数组.asList(apartmentEntity);
}
}
Servlet映射正确


您能告诉我怎么回事吗?

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

它尝试使用CORS的方式是通过发出带有默认标题的GET,该标题触发浏览器执行“飞行前”
OPTIONS
请求

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

所以404来自这个
选项
请求

从角度来看,这似乎在最近的版本中得到了修复,因为它引起了用户的许多问题。另请参见触发修复的

对于本地开发,始终可以在同一台服务器上部署两个应用程序,问题就解决了


如果在生产过程中需要在不同的服务器上运行前端/后端,则可以使用通用前端服务器(如nginx/Apache)代理这些服务器,或者打开CORS,请参阅。

您从何处提供angular html文件?它是同一台机器上的独立web服务器。这里的关键问题是,您的RESTful端点是否与您的客户端应用程序在同一来源下提供服务。如果是这样的话,那么我们可以深入研究端点没有被击中的原因。否则,我们可能需要讨论CORS或代理策略。事实上,WebDevice正在从浏览器和客户端受到冲击。我怀疑跨域请求存在问题,但我没有收到任何与此相关的消息。只有404个错误。@shevchik我想你没有明白我的问题。您能告诉我RESTful服务器的协议、主机名和端口,以及服务于您的应用程序的服务器的协议、主机名和端口吗?例如,RESTful服务器是:
http://localhost:8080
正在从
http://localhost:4040
。那么您就遇到了CORS冲突。感谢您的解释404错误从何而来from@shevchik启用CORS的另一种方法是代理您的请求(这可能并不总是可能[从技术上讲不可能])。也就是说,所有RESTful端点请求都可以由您自己的web应用程序服务器转发到相应的RESTful端点服务器。因为服务器端不受CORS的约束。