Java 使用AngularJS跨域$http请求

Java 使用AngularJS跨域$http请求,java,angularjs,jetty,embedded-jetty,Java,Angularjs,Jetty,Embedded Jetty,我的主操作系统(Windows7 Pro)上运行着一个Java服务,我可以通过http://localhost:8080/...。它返回有效的JSON resose 我还有一个用编写的angularjs,它位于我的虚拟机上,我在那里为它创建了一个虚拟主机(以便更舒适地访问)。虚拟机操作系统是Ubuntu服务器12.04.X LTS 由于这些环境在网络上相互分离,我试图通过本地机器IP地址X.X.X.X:8080(通过终端ping发送响应)访问Java服务。由于正常的$http使用不起作用,我尝试

我的主操作系统(Windows7 Pro)上运行着一个Java服务,我可以通过
http://localhost:8080/...
。它返回有效的JSON resose

我还有一个用
编写的angularjs
,它位于我的虚拟机上,我在那里为它创建了一个虚拟主机(以便更舒适地访问)。虚拟机操作系统是Ubuntu服务器12.04.X LTS

由于这些环境在网络上相互分离,我试图通过本地机器IP地址
X.X.X.X:8080
(通过终端ping发送响应)访问Java服务。由于正常的
$http
使用不起作用,我尝试了这个答案中建议的解决方案,但要么太旧了,要么是其他地方出了问题,但当我尝试做同样的事情时,它就是不起作用。在控制台中,我只看到以下内容


XMLHttpRequest无法加载http://X.X.X.X:8080/library/api/books. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://dev.xxx因此,不允许访问。

感谢大家的意见。不能说我的解决方案正确与否,但我得到了我期望的结果

我把这里的信息和这个问题的答案结合起来。我不知道如何添加一个过滤器,它将侦听请求并相应地设置响应头


希望该解决方案能够帮助那些可能遇到相同情况的人。

您需要在java服务上启用跨源资源共享(CORS)。尝试按照此处的说明启用它,但无论如何都没有帮助。请确保您已将CORS拦截器添加到jax rs服务器。如果您严格按照apachecxf说明操作,CORS就可以工作。