首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一台服务器调用服务并通过AngularJS使用它们

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

Stack Overflow用户
提问于 2015-03-27 16:33:30
回答 3查看 1.2K关注 0票数 0

这是我的javascript代码

代码语言: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;});
});`

我正在调用一个在spring中编写的服务,它位于不同的服务器上。此服务返回一个json数组。在html中,我使用以下代码来显示此服务返回的结果:

代码语言:javascript
复制
<tr ng-repeat="x in names">
    <td>{{ x.Name }}</td>
    <td>{{ x.Country }}</td>
</tr>

我得到了下面的javascript错误:“源码无法加载www.test.com/my_project/learningresources/ajaxvalue.没有‘access-XMLHttpRequest-Allow- Origin’头存在于所请求的资源上。因此不允许访问源码'https://current_site.com‘。”

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

EN

回答 3

Stack Overflow用户

发布于 2015-03-27 16:37:52

这是因为跨域请求,默认情况下不允许对不同域的请求。

两种主要的解决方案是:

  • CORS (跨域资源共享):服务器需要添加响应头部Access-Control-Allow-Origin,并将您的域名添加到该头部。为此,您需要访问服务器代码。类似response.addHeader('Access-Control-Allow-Origin', 'domain.foo.bar/*');的东西-->这取决于course.
  • Another的服务器语言解决方案是使用response.addHeader('Access-Control-Allow-Origin', 'domain.foo.bar/*');

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

票数 0
EN

Stack Overflow用户

发布于 2015-03-27 16:40:23

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

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

2.使用jsonp代理,调用它并在参数中声明回调函数(有一个带有jquery的应答here )

票数 0
EN

Stack Overflow用户

发布于 2015-03-27 16:46:16

尝尝这个

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

chrome.exe --用户数据目录=“C:/Chrome dev session”--禁用web安全

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29296309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档