java - Spring RESTful Web 服务 + AngularJS HTTP 404 错误

标签 java spring angularjs

我正在尝试在本地计算机上使用 Web 服务并使用 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);
    }
}

Servlet 已正确映射。

您能否提出问题所在?

最佳答案

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

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

这个预检自动OPTIONS请求是为了让浏览器获取服务器支持的方法列表,这是CORS的第一步。

所以 404 来自这个 OPTIONS 请求。

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

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

如果在生产中需要在单独的服务器上运行前端/后端,则可以通过 nginx/Apache 等通用前端服务器代理这些服务器,或者打开 CORS,请参阅 enable-cors.org .

关于java - Spring RESTful Web 服务 + AngularJS HTTP 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886746/

相关文章:

java - 当 hashcode() 实现返回常量值时,为什么哈希表会退化为链表?

javascript - 使用 Express Handlebars 和 Angular JS

java - 签名长度不正确 : got 127 but was expecting 128

java - 为什么hibernate删除操作不起作用?

java - hibernate/Java : retrieving primary key always returns zero

java - RememberMe 服务无法正常工作

angularjs - 在 Controller 之间共享异步数据而不发出多个请求

javascript - Angular $scope 没有在 HTML 中显示正确的数据

java - 在文件名中使用空格在 Android 中保存文件

java - 访问其他地方的类的字段?