【发布时间】:2015-02-07 21:31:24
【问题描述】:
我的项目有一个奇怪的问题。我决定在 Spring 中编写服务器应用程序,并使用 AngularJS 编写前端。 在服务器端,我有一个简单的控制器,它从简单的实体返回一些简单的数据;)。它看起来像这样:
@RestController
public class ApiController
{
@RequestMapping( value = "/getAllProfiles", method = RequestMethod.GET)
public Entity getEntity()
{
Entity e = new Entity();
e.setName( "myname" );
return e;
}
}
在前面,我有一个 Angulars 控制器,它看起来像:
var app = angular.module('app', []);
app.config(function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
});
app.controller('Hello', function ($scope, $http) {
$http.get({
method: 'GET',
url: 'http://localhost:8080/getAllProfiles'
}).success(function (data) {
console.log('success', data)
$scope.greeting = data;
}).error(function(){
console.log("something goes wrong");
});
})
和html文件:
<html ng-app="app">
<head>
<title>Hello AngularJS</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.12/angular.min.js"></script>
<script src="view1.js"></script>
</head>
<body>
<div ng-controller="Hello">
<p>The content is {{greeting.name}}</p>
</div>
</body>
</html>
当我启动服务器时,我连接到 localhost:8080/getAllProfiles 并且一切正常。我收到这样的 JSON {"name":"myname"}。但是,当我尝试从 Angular 端执行相同操作时,我收到 The content is - 来自服务器的空数据,当然,错误函数正在控制器中调用。我认为这可能是 CORS 问题,但我在服务器端和 Angular 端添加了过滤器,但没有帮助。
js控制台(我用的是Chrome)说:加载资源失败:服务器响应状态为404(未找到)
我真的不知道该怎么办。我想在这两个应用程序之间“交谈”,但我不能因此。 如果有人可以帮助我,我将非常感激。
【问题讨论】:
-
这可能没什么区别,但是我看到你在http.get请求的配置中设置了一个GET方法名,你肯定不需要这一行,它已经是一个GET
-
是的,我知道。此 http 的结构之间的更改不能解决问题。
-
如果您检查了 CORS 不是问题,您是否也仔细检查了 a) spring 应用程序正在侦听 8080 和 b) 它没有绑定到的基本路径(即, 一些 /foo/getAllProfiles)?
-
是的,Spring 应用程序在 8080 上,因为当我在 chrome - localhost:8080/getAllProfiles 中执行此操作时,我得到了服务器的答复。它从正面不起作用。路径不错,在上面的spring控制器中可以看到这个。