【问题标题】:How to get data from JSONP APIs in AngularJS [duplicate]如何从AngularJS中的JSONP API获取数据[重复]
【发布时间】:2020-02-07 20:32:36
【问题描述】:

如何使用外部 API 在 Angular JS 中获取客户端 IP 地址?我总是得到响应为“”?我使用的浏览器是 BRAVE

我需要从 Angular 前端获取客户端 API 并将其发送回后端(SPRINGBOOT)。我尝试了许多外部 API,但我得到了“”作为响应数据。如何在 AngularJS 中获得响应? 我正在使用下面的代码来获取 API 响应。

我试过 http://jsonip.com?callback=? 。它在浏览器和邮递员中运行良好,但是当我尝试 console.log(response.data) 时,输出是“”

$http.get("randomeOnlineAPI").then(handleSuccess, handleRemoteError);

我需要获取 API 响应,然后将收到的 ip 发送回后端。

【问题讨论】:

    标签: javascript angularjs ip jsonp


    【解决方案1】:

    对于 JSONP API,请使用:1

     var url = "//api.ipify.org/";
     var trust = $sce.trustAsResourceUrl(url);
     $http.jsonp(trust,{params: {format:'jsonp'}})
       .then(function(response) {
         console.log(response);
         $scope.response = response.data;
     }).catch(function(response) {
         console.log(response);
         $scope.response = 'ERROR: ' + response.status;
     }) 
    

    DEMO on PLNKR

    有关详细信息,请参阅

    【讨论】:

    • 我找到了另一种解决方法,我尝试使用此cors-anywhere.herokuapp.com/API-YOU-WANT 访问 api 例如:我使用 $http.get('cors-anywhere.herokuapp.com/http://api.ipify.org/…);
    • 我试过 jsonp ,但它仍然被 MIME 类型 application/json 的 Cross Orgin Read Blocking 阻止。
    • 问题中的示例显示了一个支持 JSONP 的 API。如果 API 不支持 JSONP 并且不允许跨域资源共享,那么唯一的选择就是从您自己的服务器或代理访问它。浏览器阻止来自 JavaScript 的跨域请求,以保护用户免受恶意 JavaScript 的侵害。
    猜你喜欢
    • 2014-03-24
    • 2013-01-09
    • 2017-12-15
    • 2018-10-29
    • 2016-06-16
    • 2015-05-03
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多