/ / Konsumowanie jsonp z angularjs, (nie może CORS) - javascript, angularjs, node.js, http, jsonp

Konsumpcja jsonp z angularjs, (nie może CORS) - javascript, angularjs, node.js, http, jsonp

Muszę załadować plik JSON z innego serwera (na którym nie mam kontroli). Po kilku godzinach badania wykazały, że JSONP to brudny hack, który odpowiada na moje prośby.

Korzystam z nodejs, obsługując stronę na localhost: 3000 używając gulp. Ładowanie JSON z localhost: 8000

Udało mi się uruchomić przykład z adresu URL, którego nie potrzebuję (znalazłem go losowo w Internecie), używając tego samego kodu, który nie działał z moim adresem URL.

To sprawia, że ​​zastanawiam się, czy próbuję odczytać plik jak coś, co nie jest? O ile mogłem zbadać, nie powinno być potrzebne, aby parsować JSON w JSONP. Czy jestem na dobrej drodze?

Poniżej kod, o którym mówiłem:

(function () {
"use strict";

angular
.module("qwe.asd")
.controller("UsersController", UsersController);

/** @ngInject */
function UsersController($http, $log, $sce) {

var vm = this;
var trustedUsersAPI = "http://localhost:8000/users?callback=JSON_CALLBACK";
$sce.trustAsResourceUrl(trustedUsersAPI);

$http.jsonp(trustedUsersAPI, {
"callback": "JSON_CALLBACK"
})
.success(function (data) {
$log.log("request 1 - OK");
$log.log(data);
vm.users = data;
})
.error(function () {
$log.log("request 1 - KO");
});

var url = "http://public-api.wordpress.com/rest/v1/sites/wtmpeachtest.wordpress.com/posts?callback=JSON_CALLBACK";
$sce.trustAsResourceUrl(url);

$http.jsonp(url)
.success(function (data) {
$log.log("request 2 - OK");
$log.log(data);
})
.error(function () {
$log.log("request 2 - KO");
});


}
})();

I dzienniki wygenerowane ...

angular.js:13424 request 1 - KO
angular.js:13424 request 2 - OK
angular.js:13424 Object {found: 12, posts: Array[12]}

I na koniec, pliki JSON, które czytam (źle):

Ten, którego potrzebuję, ale nie mogę

[{"id":0,"firstname":"front","lastname":"end","email":"frontend@example.com"},{"id":1,"firstname":"back","lastname":"end","email":"backend@example.com"},{"id":2,"firstname":"john","lastname":"doe","email":"johndoe@example.com"},{"id":3,"firstname":"dev","lastname":"eloper","email":"developer@example.com"},{"id":4,"firstname":"ad","lastname":"min","email":"admin@example.com"}]

I ten, którego nie potrzebuję, ale działa dobrze

{"found":12,"posts":[{"ID":XX,"site_ID":XXXX,"author":XXXX(..POSTS DATA WITH NO VALUE HERE..)}]}

P.S. Jestem tu naprawdę zielony, od dziś rano jestem kanciasty!

Odpowiedzi:

-1 dla odpowiedzi nr 1

Dla tych, którzy mnie ścigają, podążałem złym tropem. Dzięki komentatorom dowiedziałem się, że JSONP musi być obsługiwany na serwerze (podobnie jak CORS).