使用$ http.get为一个网址抓取JSON参数,但在另一个网址上

时间:2017-10-30 15:22:34

标签: angularjs json rest service

我是Angular的新手,并试图获得一些基本的UI内容。我启动并运行了RESTful Spring服务。当我卷曲服务时:

curl http://myPersonalSite.com:1313/service/event?id=1

我收到包含“id”,“description”等内容的JSON响应。 使用相同的代码,但切换出我正在关注的示例中给出的URL

curl http://rest-service.guides.spring.io/greeting

我还获得了带有“id”和“content”的JSON响应。 示例网址导致我在运行时显示ID

spring run app.groovy

...但是当我将其切换为我的服务URL时,不显示ID。它似乎无法从我的服务中获取JSON响应的任何信息。我在这里缺少什么?!?

/public/index.html:

<html ng-app="demo">
<head>
    <title>Hello AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
    <script src="hello.js"></script>
</head>
<body>
    <div ng-controller="Hello">
        <p>The ID is {{event.id}}</p>
    </div>
</body>

/public/hello.js:

angular.module('demo', []) .controller('Hello', function($scope, $http) { $http.get('http://rest-service.guides.spring.io/greeting'). // this works //$http.get('http://myPersonalSite.com:1313/service/event?id=1'). // this doesn't work then(function(response) { $scope.event = response.data; }); });

app.groovy - 简单地说:

@Controller class JsApp { }

...然后我运行spring run app.groovy并且示例网址在浏览器中呈现ID正常,但我的网址呈现页面但没有ID。同样,两个URL的curl都返回包含和“id”键的JSON。我已经阅读了一些关于JSON字符串与对象的内容,这似乎不是问题所在。任何帮助将不胜感激。

注意 - 以下主题类似,但略有不同jQuery - .get works for 1 URL but not another

1 个答案:

答案 0 :(得分:0)

我猜你的请求被CORS政策阻止了。您可以检查浏览器控制台是否有任何错误消息,例如“...已被CORS策略阻止:请求资源上没有'Access-Control-Allow-Origin'标头”。

如果您检查Chrome的网络标签,则休息服务响应实际设置了Access-Control-Allow-Origin。

如果请求的资源的域与页面域不同,浏览器将阻止ajax请求,并且没有在服务器端设置正确的Access-Control-Allow-Origin标头。