获取"否'访问控制 - 允许 - 来源'标头出现在请求的资源上#34;与Angularjs

时间:2015-02-25 18:00:51

标签: angularjs cross-domain

我尝试使用Angular创建SPA。我必须使用不同服务器的服务。这是一个基于Java的服务。我在这里得到" No' Access-Control-Allow-Origin'标头出现在请求的资源上"

angular.module('tableApp', [])

.config(function ($httpProvider) {
    //Enable cross domain calls
    $httpProvider.defaults.useXDomain = true;

    $httpProvider.defaults.withCredentials = true;
    delete $httpProvider.defaults.headers.common["X-Requested-With"];
    $httpProvider.defaults.headers.common["Accept"] = "application/json";
    $httpProvider.defaults.headers.common["Content-Type"] = "application/json";
    //Remove the header used to identify ajax call  that would prevent CORS from working
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
})
.controller('tableCtrl', ['$scope', '$http', '$timeout', function ($scope, $http) {

     var bassURL = 'http://[server ip]:8080/ABC/resource/XYZ'
    $http.get(bassURL + '/getTypes').success(function (Type) {
        $scope.Type = Type;
    });
    }
])

请帮忙。

2 个答案:

答案 0 :(得分:1)

您的浏览器正在使用CORS协议来验证对服务的访问,以防止跨站点脚本攻击。您需要在服务器上启用CORS支持(添加Access-Control-Allow-Origin标头,允许承载Angular站点的站点)。或者,您需要使用其中一个CORS之前的黑客来获取JSON跨站点,并且您的服务器需要为其提供支持。

答案 1 :(得分:0)

第1步:

验证您的角应用实际上是否正在点击有效的网址。 通过FiddlerPostman

执行此操作

第2步:

验证您的客户端AngularJS应用程序和服务器是否在相同的URL和端口上运行。

如果您打算让它们在不同的端口/ URL上运行,那么您需要在其他注释中提到的Java应用程序setup CORS

第3步(如果使用第2步):

指定将JSON_CALLBACK参数附加到您的网址。

SO Example
Example