Sto facendo una chiamata ajax al mio server su una piattaforma che hanno impostato prevenire queste chiamate ajax (ma ho bisogno di recuperare i dati dal mio server per visualizzare i dati recuperati dal database del mio server).
Il mio script ajax funziona, può inviare i dati al mio server per permettergli di elaborarli.
Tuttavia non può recuperare i dati elaborati perché è bloccato da "Access-Control-Allow-Origin"
Non ho accesso ai sorgenti/core della piattaforma, quindi non posso rimuovere lo script che mi impedisce di farlo. (P/S Ho usato la console di Google Chrome e ho scoperto questo errore)
Il codice Ajax come mostrato di seguito:
$.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);
}
});
o c'è un codice JSON
equivalente allo script ajax di cui sopra? Penso che JSON
sia permesso.
Spero che qualcuno possa aiutarmi.
Mettete questo in cima a retrieve.php:
header('Access-Control-Allow-Origin: *');
Notate che questo disabilita effettivamente la protezione CORS, e lascia i vostri utenti esposti agli attacchi. Se non siete completamente sicuri di dover permettere tutte le origini, dovreste bloccare questo a un'origine più specifica:
header('Access-Control-Allow-Origin: https://www.example.com')
Ho risolto questo problema quando si chiama un controller MVC3. Ho aggiunto:
Response.AddHeader("Access-Control-Allow-Origin", "*");
prima del mio
return Json(model, JsonRequestBehavior.AllowGet);
E anche il mio $.ajax
si lamentava che non accettava l'intestazione Content-type nella mia chiamata ajax, così l'ho commentato perché so che il suo JSON viene passato all'azione.
Spero che questo aiuti.