Angular $http GET 和 jsonp 错误
Errors with Angular $http GET and jsonp
使用 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 上测试其他 APIs 时,它们可以工作。用 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;});
我刚刚查看了您发布的 link,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
使用 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 上测试其他 APIs 时,它们可以工作。用 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;});
我刚刚查看了您发布的 link,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