JSONP kurz und knapp erklärt

Die Datenübertragung in JSONP, JavaScript Object Notation with Padding, basiert auf einem Funktionsaufruf

Funktionsweise

Über das Script-Element lassen sich beliebige Webressourcen einbinden, auch solche die nicht der Same Origin Policy genügen:

<script src="http://example.org/jsonp.html?jsonpdemo=1"></script>

Die Response dieser Datenquelle liefert einen Funktionsaufruf:

pretext("Ihre Remote IP Adresse ist: 44.221.43.208\nKlicken Sie auf das Fenster um es zu schließen.");

Und weil sich diese Response als ausführbarer JavaScript-Code innerhalb eines Script-Elements befindet, wird der Code ausgeführt, was heißt, daß die Funktion aufgerufen wird. Voraussetzung ist natürlich, daß es diese Funktion clientseitig auch geben muss damit sie ausgeführt werden kann. Die eigentliche Datenübermittlung erfolgt über die der Funktion zugeordneten Funktionsargumente.

Über diesen Funktionsaufruf lassen sich dann verschiedene Dinge erledigen, beispielsweise der Einbau der übergebenen Daten in das DOM.

Erweiterung

Möglich ist es, der eingebundenen Webressource den Namen der aufzurufenden Callbackfunktion als Parameter zu übergeben ?callback=pretext und darüber hinausgehend auch weitere Parameter. Serverseitig muß natürlich bekannt und entsprechend programmiert sein, wie mit Requests dieser Art zu verfahren ist.

Variablen statt Funktionen

Selbstverständlich ist es auch möglich andere Symbole über eine entfernte Webressource einzubinden. Symbole sind Namen von Funktionen oder Namen von Variablen und somit ist es auch möglich, anstelle von Funktionen eben auch Variablen zu liefern. Eine diesbezügliche Response sähe z.B.: so aus:

var foo = 123;
var bar = [1,2,3];

Und darüber hinausgehend ist es auch möglich, bereits im Request die Namen dieser Symbole festzulegen.


Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de.