使用angularJS的跨域请求

时间:2015-12-10 10:08:21

标签: angularjs

我想使用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...!!!";
            }
        })

3 个答案:

答案 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: *");