2016-08-19 1 views
0

J'essaie de consommer un tiers Api en utilisant javascript et un proxy PHP comme vu dans this Tread, je suis capable d'utiliser le proxy, mais la réponse que je reçois, est toujours:Ajax inter-domaine Php proxy 403 erreur

Impossible de charger la ressource: le serveur a répondu avec un statut de 403 (Interdit) http://MYDOMAIN.co/php/ba-simple-proxy.php?url=http://jsonplaceholder.typicode.com/posts&_=1471620448707

mon code javascript est:

function getLocationSimple(){ 
var proxy = 'php/ba-simple-proxy.php', 
    url = proxy + '?url=' + 'http://jsonplaceholder.typicode.com/posts'; 
    console.log(url); 
// Make JSON request. 
    $.getJSON(url, function(data){ 

    console.log(data); 
    }); 
} 

Je pensais qu'il était sur les autorisations sur le serveur tiers, donc j'ai décidé de changer à un ouvert - http://jsonplaceholder.typicode.com/posts -, mais je reçois toujours la même erreur, ce pourrait être des autorisations dans mon propre serveur? -mon hôte est hostgator-

+0

http 403 erreur peut être due à de nombreuses raisons, vous pouvez voir plus [ici] (https://en.wikipedia.org/wiki/HTTP_403). Le problème ne se trouve pas dans votre script 'getLocationSimple' mais probablement dans' php/ba-simple-proxy.php'. –

Répondre

0

Cela a quelque chose à voir avec la politique inter-domaines. Vous ne pouvez pas faire de requêtes ajax à un autre domaine pour des raisons de sécurité, car une attaque malveillante pourrait également impliquer de faire une requête via ajax pour charger un script supplémentaire pour vous pirater.

Même si Wikipedia n'est peut-être pas le meilleur lien à fournir, cela vous donnera une idée.

https://en.wikipedia.org/wiki/Same-origin_policy

+0

merci! Je suis conscient de cela, c'est pourquoi j'essaie d'utiliser une connexion côté serveur, d'où le proxy PHP, bravo! – randomguy04

1

Essayons une fois ce morceau de code

function getLocationSimple(){ 
      $.ajax({ 
       type: 'POST', 
       dataType: 'jsonp', 
       url: "http://jsonplaceholder.typicode.com/posts" 
      }) .done(function(data) { 
       console.log(data); 
       }); 
     } 

cela se produit en raison de la politique inter-domaines. L'accès intersites n'est pas disponible du côté api. Donc, nous pouvons utiliser dataType: 'jsonp' pour résoudre ce problème

+0

fonctionne très bien pour l'exemple que j'ai choisi !, mais j'ai rencontré une nouvelle erreur lors de l'utilisation avec mon fournisseur de la vie réelle -> Refusé d'exécuter le script de htttp: // XXXXX parce que son type MIME ('application/json') n'est pas exécutable, et la vérification stricte du type MIME est activée. Y a-t-il un moyen de contourner cela? – randomguy04

+0

http://stackoverflow.com/questions/24528211/refused-to-execute-script-from-because-its-mime-type-application-json-is –