0

使用 http 和 jsonp 连接到 Etsy API 有很多困难。

URL 在浏览器中工作正常: https ://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK

但是用 jsonp 给出 404 错误,用 $http.get 给出 0 状态错误

我不认为这是 CORS 的问题,因为当我在 CodePen 上测试其他 API 时,它们可以工作。替换 Etsy URL 并没有运气。

做了更多研究,发现 Etsy 与 CORS 不兼容。有了这些知识,我应该如何进行?

示例: http ://codepen.io/SitePoint/pen/YXXQxj?editors=101

我尝试了各种解决方案,但这是我当前的代码:

var url = "https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK";

$http.jsonp(url)               
            .success(function (data) {$scope.details = "Success";})
            .error(function (data, status) {$scope.details = "Nope"+""+status;});
4

1 回答 1

0

我刚刚查看了您发布的链接,似乎 Etsy 支持 jsonp。但是你必须改变你调用他们的 api 的方式。

而不是https://..../active?api_key= ...

你需要做https://..../active.js?api_key=...&callback=etsyResult123

注意添加的.js部分。

更准确地说,使用 Angular 的$http.jsonpapi

var url = "https://openapi.etsy.com/v2/shops/GreatLakesModern/listings/active.js?api_key=5a61qc30hrvrqcperugollh5&fields=title&callback=JSON_CALLBACK";

这是一个有效的 plnkr:http ://plnkr.co/edit/ulaMTo?p=preview

于 2015-08-13T19:49:04.137 回答