2017-01-09 5 views
0

Ich versuche, die Ergebnisse von this endpoint zu holen. Mit GET bekomme ich CORS Fehler, also versuche ich Jsonp.

Die Ergebnisse sind

Refused to execute script from 'https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0' 
because its MIME type ('application/json') is not executable, 
and strict MIME type checking is enabled. 

Mein Code ist

var API_BASE_URL = 'https://api.airbnb.com/v2/'; 

function getListing(id) { 
    var url = API_BASE_URL + 'listings/' + id + '?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3'; 

    var trusted = $sce.trustAsResourceUrl(url); 

    return $http.jsonp(trusted, { 
    jsonpCallbackParam: 'callback', 
    headers: { 
     'Accept': 'application/javascript' 
    } 
    }); 
}; 

Antwort

0

Der Grund, warum Sie diesen Fehler erhalten, weil der Endpunkt ist, auch, dass Sie einen callback Parameter angegeben, gibt noch JSON, die wahrscheinlich Mittel dass der Endpunkt JSONP auch nicht unterstützt.

Siehe hier: https://api.airbnb.com/v2/listings/16218947?client_id=3092nxybyb0otqw18e8nh5nty&_format=v1_legacy_for_p3&callback=angular.callbacks._0

Diese JSON und nicht JSONP Inhalt das ist, was der Server in diesem Fall zurückgeben muss.

Die Art und Weise, wie die $http.jsonp implementiert ist, ist, dass es ein <script> Element in Ihrem DOM mit seiner src -Eigenschaft, die auf die URL zur Verfügung gestellt injiziert. Da der Server den JSON jedoch nicht in eine Callback-Funktion (JSONP) einbindet, kann dies nicht als gültiges Skript und somit als resultierender Fehler berücksichtigt werden.

Da CORS und JSONP keine Optionen sind, müssen Sie möglicherweise ein serverseitiges Skript in Ihrer Domäne schreiben, das als Proxy zwischen Ihrer Domäne und der entfernten Domäne fungiert. Dann sende die AJAX-Anfrage an dein Skript.

+0

Wenn ich die Anfrage über meine Domain sende bekomme ich nicht einen CORS-Fehler? –

+0

Nein, natürlich nicht. CORS ist nur ein Begriff, der in den Sandbox-Browsern existiert und eine Einschränkung für Javascript darstellt. Auf Ihrem Server können Sie beliebige Anfragen an eine beliebige Domäne mit einer serverseitigen Sprache wie PHP ausführen. –