2017-10-18 17 views
1

L'URL suivant donne le classement d'un concours au format JSON https://www.codechef.com/api/rankings/OCT17 Il suffit de remplacer OCT17 avec un code concoursCORS sur api de Codechef (en utilisant AngularJS)

je pensais de faire une application web qui récupérera cette api et afficher une coutume leaderboard.I essayé d'utiliser les AngularJS mais il est erreur CORS

C'est le code

`var app = angular.module('Ranklist', []); 
app.config(['$httpProvider', function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
     console.log("cross origin allowed"); 
    } 
]); 
app.controller('rank',function($scope,$http){ 
    var uri = 'https://www.codechef.com/api/rankings/COPH2017?sortBy=rank&order=asc&page=1&itemsPerPage=25'; 
    $scope.test = "test data"; 
    console.log("love can hear") 
    $http.get(uri) 
     .then(function(response){ 
     $scope.data = response.data; 
    }); 
});` 

Console montre ces 2 erreurs en chrome

`Failed to load https://www.codechef.com/api/rankings/COPH2017?sortBy=rank&order=asc&page=1&itemsPerPage=25: The 'Access-Control-Allow-Origin' header has a value 'https://developers.codechef.com' that is not equal to the supplied origin. Origin 'http://127.0.0.1:58502' is therefore not allowed access.` 

et

`angular.js:14525 Possibly unhandled rejection: {"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"https://www.codechef.com/api/rankings/COPH2017?sortBy=rank&order=asc&page=1&itemsPerPage=25","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":""}` 

Il n'y a pas d'erreur sur IE alors qu'il est sur le chrome peut-il être fixe ou il est juste un problème côté serveur (ou leur préférence)

I aussi essayé $ http.jsonp() fonction.

Répondre

0

Vous ne pouvez pas effectuer de demande de domaine croisé (CORS) sur le navigateur client.

Cette API permet uniquement les demandes de https://developers.codechef.com

Étant donné que votre demande ne vient pas de ce domaine vous vu refuser l'accès.

CORS est uniquement appliqué par le navigateur. Par conséquent, si vous avez votre propre serveur dorsal et envoyez une requête à ce serveur et à votre serveur à partir de leur serveur (appelez la requête), tout ira bien puisque vous éviterez le problème CORS.