棱角分明.js铬访问控制允许原产地



我正在尝试使用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}
    });
});

有人有同样的问题吗?你是如何做到这一点的?

谢谢。

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

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

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

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

  1. 在服务上.js文件:

    angular.module('mirthServices', ['ngResource']).    factory('Cs', function ($resource) {        返回 $resource('http://localhost/rest/cs/id/:csId');    });
  2. 在 apache proxy.conf 文件上:

    代理传递/休息 http://localhost :8889/休息ProxyPassReverse/rest http://localhost :8889/REST

我自己仍在学习 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);
}])

我通过在文件 httpd.conf 中的 apache 中更改来解决此问题:

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

我添加了行标题集,希望这对某人有所帮助

相关内容

最新更新