I'm tun einen Ajax-Aufruf zu meinem eigenen Server auf einer Plattform, die sie diese Ajax-Aufrufe zu verhindern (aber ich brauche es, um die Daten von meinem Server abrufen, um Daten aus meinem Server's Datenbank angezeigt). Mein Ajax-Skript funktioniert, es kann die Daten an das PHP-Skript meines Servers senden, damit es sie verarbeiten kann. Allerdings kann es die verarbeiteten Daten nicht zurückbekommen, da sie durch "Access-Control-Allow-Origin" blockiert sind.
Ich habe keinen Zugriff auf den Quellcode der Plattform, so dass ich das Skript nicht entfernen kann, da es mich daran hindert. (P/S Ich habe Google Chrome' s Console und fand heraus, diesen Fehler)
Der Ajax-Code wie unten gezeigt:
$.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);
}
});
oder gibt es einen JSON
äquivalenten Code zum obigen Ajax-Skript? Ich denke, JSON
ist erlaubt.
Ich hoffe, jemand kann mir helfen.
Fügen Sie dies oben in retrieve.php ein:
header('Access-Control-Allow-Origin: *');
Beachten Sie, dass dadurch der CORS-Schutz effektiv deaktiviert wird und Ihre Benutzer einem Angriff ausgesetzt sind. Wenn Sie sich nicht ganz sicher sind, dass Sie alle Ursprünge zulassen müssen, sollten Sie dies auf einen bestimmten Ursprung beschränken:
header('Access-Control-Allow-Origin: https://www.example.com')
Ich habe dieses Problem beim Aufruf eines MVC3-Controllers behoben. Ich habe hinzugefügt:
Response.AddHeader("Access-Control-Allow-Origin", "*");
vor meinem
return Json(model, JsonRequestBehavior.AllowGet);
Und auch mein "$.ajax" beschwerte sich, dass es den Content-type-Header in meinem Ajax-Aufruf nicht akzeptiert, also habe ich ihn auskommentiert, da ich weiß, dass sein JSON an die Aktion übergeben wird.
Hoffentlich hilft das.
Haben Sie versucht, den Access-Control-Allow-Origin-Header in die vom Server gesendete Antwort einzufügen? Zum Beispiel: "Access-Control-Allow-Origin: *`?