【发布时间】:2016-11-14 08:31:24
【问题描述】:
我正在开发一个使用第三方 SOAP Web 服务的 Angular Web 应用程序。
我正在使用 Angualr-soap 进行 SOAP 调用。
Angularjs 服务代码:
var app = angular.module('app', ['angularSoap']);
app.config([
'$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}
]);
app.factory("CallSOAPService", ['$soap', function ($soap) {
var baseListUrl = "http://***.***.***.***/WebBooking/ListingServices.asmx";
return {
getCityList: function () {
return $soap.post(baseListUrl, "GetCityList");
}
}
}]);
app.controller('MainCtrl', ['$scope', 'CallSOAPService',
function ($scope, CallSOAPService) {
CallSOAPService.getCityList().then(function (response) {
console.log(response);
}, function() {
console.log("Something went wrong!");
});
}]);
它给了我以下错误:
XMLHttpRequest 无法加载 http://.../WebBooking/ListingServices.asmx?wsdl.不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许访问 Origin 'null'。
我通过在 chrome 中安装 Allow-Control-Allow-Origin:* 扩展来尝试相同的调用,它工作正常。
我知道这个 chrome 扩展允许从任何来源请求任何带有 ajax 的站点,添加到响应 Allow-Control-Allow-Origin: * 标头
我在 ASP.NET Web 窗体应用程序中尝试了相同的 URL,但它没有给我这个 CORS 问题。
除了从服务器处理它之外,还有没有其他方法可以在没有得到这个 CORS 问题的情况下调用它?
【问题讨论】:
-
如果你想要一个明确的解决方案,你必须在服务器端采取行动
-
问题是我无法控制服务器端。我可以请求它,但它需要一些时间才能在服务器中得到纠正。
-
可以在后端服务器前面放一个代理
-
放置代理服务器是什么意思?