En gros, j’utilisais donc l’API du marché de l’application 42matters.com pour obtenir les détails de l’application ou des informations sur le Google Play Store. Tout fonctionnait bien et j’obtenais la réponse JSON. Une erreur étrange s'est produite et rien n'a été renvoyé.
J'ai utilisé la fonction $ .getJSON comme:
var packageID = 'com.whatsapp';
$.getJSON('https://42matters.com/api/1/apps/lookup.json?p='+packageID+'&access_token=accesstoken1234')
.done(function(appDetails) {
$('#logo').html(JSON.stringify(appDetails));
});
Comme mentionné, cela renvoyait les données et j'ai pu tout changer en conséquence, mais maintenant, cela me donne cette erreur sans aucune raison.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://42matters.com/api/1/apps/lookup.json?p=com.whatsapp&access_token=accesstoken1234. This can be fixed by moving the resource to the same domain or enabling CORS
j'ai activé le CORS en utilisant PHP, et rien ne s'est passé, j'ai essayé de changer le fichier de configuration d'Apache pour permettre à CORS de fonctionner, mais le service ne redémarre pas avec cela, je suis donc coincé.
Une dernière chose, lorsque je saisis manuellement le lien ci-dessus dans le navigateur, cela donne le résultat souhaité. S'il vous plaît aidez-moi à le résoudre
CORS est bloqué du côté du navigateur et ne permet pas à AJAX de demander des données à un autre domaine. Vous devez contacter l'équipe de 42matters.com pour ouvrir le fichier crossdomain.xml ainsi: Demande CORS jQuery AJAX ou Quelqu'un peut-il envoyer un exemple bien formé de crossdomain.xml?
Ou la solution de contournement pour AJAX Cross-Domain est JSONP: jQuery AJAX cross domain mais l'API doit prendre en charge ce type de requête.
La dernière chose à faire est de ne pas utiliser AJAX pour collecter des données à partir d'autres sources. Si c'est une plateforme mobile, il devrait avoir un objet HTTP Request natif pour le faire.
Je sais que c'est une vieille technologie, mais certains d'entre nous doivent encore faire face à cela.
Si vous utilisez un serveur Web IIS6:
IIS7 - Ajoutez ceci à votre web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Nous pouvons résoudre le problème en plaçant une balise de base sur notre fichier html.
<head>
<base href="http://www.otherdomain.com/xyz/">
</head>