我有一个Servicestack REST服务和一个angular.js客户端。 Web托管在另一个端口上,然后是RESTService。
使用$ http检索数据但使用$ resource不起作用。
在REST服务中我设置了以下全局标题:
GlobalResponseHeaders =
{
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
{ "Access-Control-Allow-Headers", "X-Requested-With"}
}
现在在angular.js中,我可以读取成功读取$ http的方法,例如
$http({
method:'get',
url:address,
requesttype:'application/json'
}).success(function(data) {
$scope.ServiceStatus = data;
});
但使用$ ressource读取相同的地址不起作用 我的工厂代码是:
myApp.factory('qaServiceStatus', function($resource){
return $resource('http://localhost:1338/api/status', {}, {
query: {method:'GET', headers: {'Content-Type': 'application/json'}, params:{}}
});
});
我在控制器中以这种方式使用它
$scope.RESTStatus = qaServiceStatus.get({});
我得到的错误是:
Access-Control-Allow-Origin不允许原点http://localhost:7000
和
XMLHttpRequest无法加载http://localhost/api/status
。 Access-Control-Allow-Origin不允许原点http://localhost:7000
。
我做错了什么?
我还尝试将允许的原始内容更改为确切的地址,但这无济于事
答案 0 :(得分:8)
这是响应客户端的API,不允许客户端发出CORS请求。 我不知道您使用的是哪种后端,但您需要查看Access-Control-Allow-Origin设置以使其正常工作。
更新
错误或功能,你将不得不问angularjs团队。他们解释atm:将port作为变量而不是端口。解决方案是逃避:
示例:
$resource('http://localhost:1338\:1338/api/status', {}, {.....