Je fais un appel ajax vers mon propre serveur sur une plate-forme qui a été configurée pour empêcher ces appels ajax (mais j'ai besoin qu'elle récupère les données de mon serveur pour afficher les données récupérées dans la base de données de mon serveur).
Mon script ajax fonctionne, il peut envoyer les données au script php de mon serveur pour lui permettre de les traiter.
Cependant, il ne peut pas récupérer les données traitées, car elles sont bloquées par le paramètre "Access-Control-Allow-Origin"
.
Je n'ai pas accès aux sources et au noyau de cette plateforme. Je ne peux donc pas supprimer le script qui m'empêche de le faire. (P/S J'ai utilisé la console de Google Chrome et j'ai trouvé cette erreur)
Le code Ajax est présenté ci-dessous :
$.ajax({
type: "GET",
url: "http://example.com/retrieve.php",
data: "id=" + id + "&url=" + url,
dataType: 'json',
cache: false,
success: function(data)
{
var friend = data[1];
var blog = data[2];
$('#user').html("<b>Friends: </b>"+friend+"<b><br> Blogs: </b>"+blog);
}
});
ou existe-t-il un code JSON
équivalent au script Ajax ci-dessus ? Je pense que JSON
est autorisé.
J'espère que quelqu'un pourra m'aider.
Mettez ça au dessus de retrieve.php :
header('Access-Control-Allow-Origin: *');
Notez que cela désactive effectivement la protection CORS, et laisse vos utilisateurs exposés aux attaques. Si vous n’êtes pas totalement certain de devoir autoriser toutes les origines, vous devriez verrouiller cette option sur une origine plus spécifique :
header('Access-Control-Allow-Origin: https://www.example.com')
J'ai résolu ce problème en appelant un contrôleur MVC3. J'ai ajouté :
Response.AddHeader("Access-Control-Allow-Origin", "*");
avant mon
return Json(model, JsonRequestBehavior.AllowGet);
Et aussi mon $.ajax
se plaignait de ne pas accepter l'en-tête Content-type dans mon appel ajax, donc je l'ai commenté car je sais que c'est du JSON qui est passé à l'action.
J'espère que cela vous aidera.