我在Angular js
XMLHttpRequest cannot load http://localhost:29527/Services/ProfileService.svc/ChildList?ParentId=37. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access.
这是我的代码
app.controller("AppCtrl", function($http) {
var app = this;
var config = {
headers: {
'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;'
}
};
$http.get(childList,config)
.success(function(data) {
var carsFromServer = JSON.parse(data);
console.log(data.getChildrenResult);
});
});
答案 0 :(得分:2)
最初网站可以从其他网站加载数据。但很快人们就会明白它非常危险,因为黑客可以从其他网站窃取cookie。因此引入了 CORS(跨源资源共享)标准,它不允许网站从不同域加载数据。但它仍然可以配置。
您的网址http://localhost:29527/Services/ProfileService.svc/ChildList?ParentId=37
似乎是一个wcf服务,可能是自托管的,但您不能将其用于跨域请求,直到您实现所述here和托管wcf之类的功能网络服务器。在wcf中启用CORS有时会带来很多麻烦,因为默认情况下wcf非常有限,甚至在某些情况下也是不可能的。仅仅因为wcf不了解http请求,并且削减了大量的头信息。之前提供的链接应暂时解决,但......!
创建WebApi站点,其中包含对wcf服务的服务引用,添加所需的一切(路由,控制器,操作)并在其中实现CORS,方法是将属性应用于控制器(非常简单)。所以你最终将得到3个项目(wcf服务,asp.net webapi,angularjs网站)。或者更好地使用angularjs作为wcf的web服务。但是,拥有单独的webapi服务器将是灵活的,因为您可能想要制作移动版本,或者只是移动本机应用程序,或任何您想要的。它将服务于一切 希望有所帮助。对不起英语
答案 1 :(得分:0)
这是因为http://localhost:29527/Services/ProfileService.svc/ChildList?ParentId=37
没有Access-Control-Allow-Origin
标题。这会导致XMLHttpRequest
失败,因为原始http://localhost:63342
(您的html所在的位置)不允许从其他来源读取数据。
您是否真的查看了错误消息?
答案 2 :(得分:0)
尝试使用$ http.jsonp而不是$ http.get结帐https://docs.angularjs.org/api/ng/service/$http#jsonp