8

我正在尝试使用 Angular.js 服务从我使用 Jersey/Spring 制作的 REST 服务中获取 JSON。

当我使用 firefox 时,它工作正常,但是当我转到 Chrome 时,我收到了消息:

XMLHttpRequest cannot load http://localhost:8080/VirtualLawyerPj/services/timeoftheday/asjson/tue. Origin http://localhost:8090 is not allowed by Access-Control-Allow-Origin.

这是我的服务代码:

angular.module('myAppServices', ['ngResource']).
factory('Time', function($resource){
    return $resource('http://localhost:port/VirtualLawyerPj/services/timeoftheday/asjson/tue',{port:":8080"}, {
        query: {method:'GET', params:{}, isArray:false}
    });
});

有人有同样的问题吗?你是怎么做到的?

谢谢。

4

4 回答 4

2

我自己还在学习 Angular,但是使用 $location 服务来获取当前的 url 主机和端口使得在环境之间移动代码时变得更容易。顺便说一句,这也帮助我克服了你描述的问题。

angular.module('myAppServices', ['ngResource']).
factory('Time', ['$location', function($location) {
  var url = 'http://:host::port/VirtualLawyerPj/services/timeoftheday/asjson/tue';
  var params = {
    host: $location.host(),
    port: $location.port()
  };
  var actions = {
    query: {method:'GET', isArray:false}
  };
  return $resource(url, params, actions);
}])
于 2013-04-07T17:39:24.530 回答
2

CORS 解决方案在html5rocks教程中进行了描述。为我工作。

于 2012-10-02T12:03:59.693 回答
2

我有一个在端口 80 上运行的 Apache 服务器和在端口 8889 上运行的 REST Web 服务,同一台服务器。我尝试了这个解决方案但没有奏效:

    myApp.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        删除 $httpProvider.defaults.headers.common['X-Requested-With'];
    }]);

我想出让它工作的唯一方法是:

  1. 在 services.js 文件中:

    angular.module('mirthServices', ['ngResource'])。
        工厂('Cs',功能($资源){
            return $resource('http://localhost/rest/cs/id/:csId');
        });
    
  2. 在 apache proxy.conf 文件中:

    ProxyPass /rest http:// localhost:8889/REST
    ProxyPassReverse /rest http:// localhost:8889/REST
    
于 2013-06-10T23:57:05.123 回答
0

I solved this problem by changing in apache in file httpd.conf :

....
<Directory>
    .....
    Header set Access-Control-Allow-Origin "*"
</Directory>

I added the line Header set, hope this help someone

于 2014-05-08T14:30:18.993 回答