这对我来说很大程度上是一个新领域,所以我的问题更多是关于有用的资源。
我有一个运行在端口 80 上的 apache 服务器,它只托管一个 javascript 应用程序。
这个 java 应用程序通过对端口 8080 上运行的 java 应用程序的 rest 调用获取其数据。
对于前端,我使用的是 AngularJS。我的请求服务如下所示:
(function(ng, app){
"use strict";
app.service(
"questService",
function( $q, $http, _, categoryService ) {
function($q, _, $http){
function getQuestsFromServer(){
$http({method: 'GET', url: 'http://localhost:8080/worldcraft/quests'}).
success(function(data, status, headers, config) {
console.log("SUCESS!! {status: " + status + " \nData:" + data + "}");
}).
error(function(data, status, headers, config) {
console.log("FAILURE!! {status: " + status + " \nData:" + data + "}");
});
}
}
return getQuestsFromServer : getQuestsFromServer;
})
})(angular, Worldcraft);
在java应用程序中我有这样的服务
@Singleton
@Produces(MediaType.APPLICATION_JSON)
@Path("worldcraft/quests")
public class QuestbookService {
private Questbook questbook;
@Inject
public QuestbookService(Questbook questBook) {
this.questbook = questBook;
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Quest> getQuests() {
return questbook.getQuests();
}
}
使用 chrome 进行测试时,我得到了 javascript 异常: XMLHttpRequest cannot load http://www.myserver.com:8080/worldcraft/quests。Access-Control-Allow-Origin 不允许来源http://www.myserver.com 。
经过研究,似乎正确的解决方案是使用 JSONP。但我还没有在网上看到任何能真正帮助我理解如何利用现有技术做到这一点的东西。
Java 堆栈使用 jetty、jackson、jersy 和 guice 来装饰 servlet。
前端堆栈使用 AngularJS 进行路由。
AngularJS 平台托管在端口 80 上,并带有一个常规的 Apache 服务器。
任何建议或提示都会很好,研究主题将是首选。或者解释我可能做错了什么。