使用http和jsonp连接到Etsy API有很多困难。
但是使用$ http.get
给出了jsonp的404错误和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;});
答案 0 :(得分:0)
我只看了你发布的链接,似乎Etsy支持jsonp。但你必须改变你打电话给api的方式。
而不是https://..../active?api_key= ...
您需要执行https://..../active.js?api_key=...&callback=etsyResult123
注意添加.js
部分。
更准确地说,使用Angular的$http.jsonp
api,它将是
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