Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 无法通过angular从API获得响应?_Angularjs - Fatal编程技术网

Angularjs 无法通过angular从API获得响应?

Angularjs 无法通过angular从API获得响应?,angularjs,Angularjs,我的代码如下 $scope.LoadSearchResults = function () { $scope.hotels = ''; $scope.allData = ''; var mydata = ''; $http({ url: 'myurl', Authorization : 'code', method: 'POST', he

我的代码如下

$scope.LoadSearchResults = function () {
        $scope.hotels = '';
        $scope.allData = '';
        var mydata = '';
        $http({
            url: 'myurl',
            Authorization : 'code',
            method: 'POST',
            header: { 'Content-type': 'text/json' }
        })
        .success(function (mydata) {
           $scope.hotels = JSON.parse(JSON.stringify(mydata.SearchResponse.Hotels.Hotel));
           $scope.allData = JSON.parse(JSON.stringify(mydata.SearchResponse.Hotels.Hotel));

           $scope.AllLocality($scope.allData);
        })
        .error(function (mydata) {
            $scope.hotels = "Failed";
            console.log(JSON.stringify(mydata));
        });        
    }
而获得错误是非常困难的 “跨源请求被阻止:同一源策略不允许在读取远程资源。(原因:CORS标头“访问控制允许源”丢失)。”


如何解决这个问题?

这不是角度问题

原因是您正在触发一个跨源请求(例如,您的应用程序位于一个域上,并且由
url:'myurl'
指定的请求用于另一个域),HTTP不允许这样做,除非接收请求的服务器通过向响应中添加CORS头来专门添加权限

要解决您的问题,请在此处选择4个选项之一(我相信您可以根据具体设置找到更多选项):

  • 使您的应用程序向同一域发出请求,这通常是首选和最安全的方法(例如,托管angular code的web应用程序还负责通过
    $http
    响应您正在执行的xhr)
  • 如果您可以控制服务器如何创建响应,那么添加这样的头应该相当容易(我不能在这里添加示例,因为它完全依赖于您使用的web服务器或应用程序网关)
  • 如果您无法控制服务器响应(并且最重要的是它的报头),您可以在中间充当一个请求代理添加您自己的服务器,从而使您的JS应用程序向服务器发出请求(不引起CORS问题),服务器本身向第三方提供商
  • 提出代理请求。
  • 如果您只需要GET请求(代码段中的情况似乎不是这样),如果服务器支持此类请求,则可以使用angular的
    $http

您好,我也遇到了同样的问题,但现在我已通过以下方法解决了问题:

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");

请在父项之后传递控制器上的头::\u construct()

你好,格鲁,谢谢你的回复。因为我没有访问服务器的权限,所以我不确定服务器的响应。还有其他解决办法吗?我也在尝试下面的代码…$http({method:“Post”,url:$rootScope.ServiceBaseUri+“ControllerName/Function”,data:{Email:Email},datatype:“json”})。success(Function(res){accesstoken=res.MESSAGE;})嘿@Samy我刚刚用几个其他选项编辑了我的答案。n、 如果您真的需要进行跨域请求,那么3可能是最安全的,但是需要一些额外的(后端)编码