lima-city: Webhosting, Domains und Cloud
2 Pluspunkte 0 Minuspunkte
Wie kann ich eine Datei von einem Server mit JSONp abrufen aber dabei die cross-domain policy umgehen?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Ein Browser blockiert normalerweise AJAX Anfragen an andere Domains wegen der Same-Origin-Policy, aber script Tags sind von dieser Regel ausgenommen. Du fügst ein script Tag dynamisch zu deiner Webseite hinzu und spezifizierst in der URL einen callback Parameter, der den Namen der Funktion enthält, die die Daten verarbeitet. In diesem Fall nenne ich den Callback "handleResponse".

const script = document.createElement("script");
script.src = "https://server2.com/endpoint.php?callback=handleResponse";
document.body.appendChild(script);

Dann definierst du in deinem HTML die Callback Funktion in Javascript.

function handleResponse(data) {
 const output = document.createElement('pre');
 output.textContent = JSON.stringify(data, null, 2);
 document.body.appendChild(output);
}

Auf der anderen Serverseite erstellst du ein PHP Script welches den Namen der Callback Funktion aus dem Queryparametern übernimmt und die Callback Funktion als Javascript Funktion ausgibt.

<?php

if (isset($_GET['callback'])) {

    $callback = $_GET['callback'];

    // Beispiel-Daten, die du senden möchtest
    $data = [
        "status" => "success",
        "message" => "Daten erfolgreich geladen",
        "data" => [
            "name" => "John Doe",
            "age" => 30,
            "city" => "Berlin"
        ]
    ];

    // JSONP-Response erstellen
    header('Content-Type: application/javascript');

    echo $callback . '(' . json_encode($data) . ');';

}

?>

von (619 Punkte)  
Nicht vergessen die HTTP Parameter zu validieren!

$callback = preg_replace('/[^a-zA-Z0-9_]/', '', $_GET['callback']);
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer