0

我创建了两个资源

angular.module('myApp.services', ['ngResource'])

.factory('Banana', function ($resource) {
    return $resource('http://localhost:8080/banana/:bananaId');
})

.factory('Mango', function ($resource) {
    return $resource('http://localhost:5000/mango/:mangoId');
});

两种 REST 资源似乎都可以正常工作。我通过向 http://localhost:8080/banana/http://localhost:5000/mango/发送 GET 请求来使用 Postman 测试它们 。在这两种情况下,服务器都以状态码 200 OK 响应,并返回一个香蕉或芒果对象的非空 JSON 数组。

当我从 Angular 控制器中访问 REST 接口时: Mango.query() 正确返回 Mangos 数组,但 Banana.query() 返回一个空数组。

Banana 后端是用 java 和 Jersey 编写的:

@Path("banana")
public class BananaCollection {
    @GET
    @Produces({MediaType.APPLICATION_JSON})
    public List<Banana> getBananas() {
        return BananaBox.getBananas(); // BananaBox handles the connection to the DB etc.
    }

我无法访问 Mango 后端的代码。

这两者之间可能有什么区别?

4

1 回答 1

1

尽管两个地址位于localhost不同的端口号上,但这意味着浏览器将它们视为不同的域。

这两个位置都来自与原始 html 不同的端口,因此将启动浏览器安全性,除非响应包含合适Access-Control-Allow-Origin的标头,否则将阻止响应数据到达 javascript。

于 2015-09-11T14:58:32.377 回答