繁体   English   中英

从另一台服务器调用服务并通过AngularJS使用它们

[英]Calling Services from another server and using them through AngularJS

这是我的JavaScript代码

var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
    $http.get("www.test.com/my_project/learningresources/ajaxvalue")
    .success(function (response) {$scope.names = response;});
});`

我正在调用春季编写的服务,该服务存在于其他服务器上。 该服务返回一个json数组。 在html中,我使用以下代码显示此服务返回的结果:

<tr ng-repeat="x in names">
    <td>{{ x.Name }}</td>
    <td>{{ x.Country }}</td>
</tr>

我收到以下JavaScript错误:“ XMLHttpRequest无法加载www.test.com/my_project/learningresources/ajaxvalue。所请求的资源上没有'Access-Control-Allow-Origin'标头。来源' https://current_site.com '因此,不允许访问。”

这是由于某些数据库权限引起的。 我不能得到这个。 我是AngularJS和Spring的新手。

这是因为存在跨域请求,默认情况下将不允许对其他域的请求。

2种主要解决方案是:

  • CORS(跨源资源共享):服务器需要添加响应标头Access-Control-Allow-Origin并将您的域添加到此标头。 您需要为此访问服务器代码。 response.addHeader('Access-Control-Allow-Origin', 'domain.foo.bar/*'); ->这取决于服务器语言。

  • 另一个解决方案是使用JSONP。

在此处阅读有关CORS的更多信息(底部的JSONP链接)

您正在尝试执行跨域请求,这是浏览器所不允许的。 解决方案可以是:

1.调用充当与外部域的桥梁的服务器服务,并将数据返回给您的角度函数。

2.使用一个JSONP代理调用它,并宣布内部参数回调函数(有一个答案在这里用jQuery)

尝试这个

关闭chrome浏览器按win + r。 复制粘贴以下

chrome.exe --user-data-dir =“ C:/ Chrome开发者会话” --disable-web-security

然后尝试查看结果,然后告诉您加载应用程序后是否出现相同的错误。 祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM