AngularJS soap调用会出现CORS问题

时间:2016-08-30 11:07:26

标签: javascript angularjs google-chrome soap cors

我是AngularJS和SOAP的新手,我正在做一个小型应用程序,它对公共API执行soap调用。问题是我收到此错误: 否"访问控制 - 允许 - 来源"在headeris礼物。 我经常搜索,我发现这个错误与CORS有关。我该如何解决? 我使用的是Chrome,我找到了一个允许它的插件,现在我收到错误500,所以我不知道我是否解决了它或者是否是其他的。 这是我的代码。

<!DOCTYPE html>
<html>
<head>
    <title>Chiamata SOAP</title>
    <script src="lib/angular.min.js"></script>
    <script src="lib/soapclient.js"></script>
    <script src="lib/angular.soap.js"></script>
    <script>
        var myApp = angular.module('myApp', ['angularSoap'])
        .factory("testService", ['$soap',function($soap) {
        var base_url = "http://www.webservicex.net/globalweather.asmx?wsdl";

            //$soap.setCredentials("admin", "admin");

            return{
                GetCitiesByCountry: function(){
                    return $soap.post(base_url, "GetCitiesByCountry ", {CountryName:"Italy"});
                }
            }
        }])
        .controller('soapCtrl', function($scope, testService){
            $scope.onClickCall = function(){
                    console.log("text before call")
                    testService.GetCitiesByCountry().then(function(response){
                        console.log("Testo dopo la chiamata")
                        console.log(response);
                        $scope.data = response.data;
                    });
            }
        });
    </script>
</head>
<body ng-app="myApp">
<div ng-controller="soapCtrl">
    <span>Effettua la chiamata SOAP </span><button ng-click="onClickCall()">Invia</button>
</div>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

  

我搜索了很多,我发现这个错误与CORS有关。

仅切向。该错误与Same Origin Policy有关,而CORS是您正在与之交谈的服务器可以放宽针对给定客户的相同原始政策的机制(例如,制作ajax请求的页面的来源。)

如果不允许您的页面来源向服务器发出请求,那么您的客户端代码就无法使服务器允许请求。

如果你控制服务器,请查看CORS规范以及CORS的最新方法,以了解如何实现允许页面来源查询的回复。

如果您不控制服务器:

  • 查看其文档和/或联系相关人员。也许它有一个JSONP替代SOAP(JSONP是另一种解决SOP的方法,但又要求服务器实现它)。
  • 设置您自己的服务器并从您的客户端拨打您的服务器并让您的服务器查询另一台服务器。 SOP仅适用于浏览器上的请求,而不适用于服务器到服务器。
  • 此阶段的另一个常见建议是查看通过Yahoo! Query Language抓取信息,但这不适用于SOAP请求。