我想使用angularJS显示来自API的数据。在同一台PC上运行代码时,此代码工作正常。但是,当我尝试在另一台PC上进行测试时,它显示错误,请求的资源上没有 access-control-allow-origin'标头。 angularjs
我正在使用1.4.8
这是我的代码:
$http({
method:"get",
url: 'http://IP/Test_API/index.php/test123_api/empdtl_from_empid/emp_id/'+$scope.empId
})
.success( function( response ){
if (response != null || response != 'undefined') {
$scope.empNm = response.data.emp_name;
}
})
.error( function( response ) {
if(response.statusCode == 404)
{
$scope.errorEmpNm = "You May Inputted Wrong Employee Id which have not Exist, Please Enter Correct Employee Id...!!!";
}
})
答案 0 :(得分:3)
你无法通过javascript解决它。您发出请求的服务器必须实施CORS才能从您的网站访问中授予JavaScript
。您的JavaScript
无法授予自己访问其他网站的权限。
答案 1 :(得分:3)
您可以尝试$http.jsonp()
,它可以发出跨域请求,但请求方法的唯一选项是 GET ,并且您无法使用它来承载大型有效负载,因为浏览器可能会限制网址长度。
请注意网址中的 callback=JSON_CALLBACK
!
var url = "http://other.domain.com/some/path?callback=JSON_CALLBACK";
$http.jsonp(url, {params: {param1: value1, param2: value2}})
.success(function(response) {
// ...
})
.error(function(response) {
// ...
})
答案 2 :(得分:0)
您必须在回复时启用CORS。解决方法是使用enable CORS plugin for Chrome但是,请注意,这不是真正客户的解决方案,它会对您的浏览器产生副作用。仅用于测试。
真正的修复是你必须在服务器端做的事情。在后端启用Allow-Control-Allow-Origin的方式取决于后端的体系结构。将“Allow-Control-Allow-Origin”添加到您的回复标题中,问题将得到解决。
对于PHP,将以下内容添加到您的响应标题
header("Access-Control-Allow-Origin: *");