Freitag, 13. November 2015

Open-Data-Tankerkönig-API jetzt mit CORS-Unterstützung

Unser freies API für Echtzeit-Benzinpreise unterstützt jetzt auch CORS

Das hört sich ziemlich sonderbar an, hat aber einen einfachen Hintergrund: aus Sicherheitsgründen  erlauben Browser nicht ohne weiteres, dass JavaScript Daten von anderen Servern holt. Wenn das versucht wird, wirft der Browser eine Fehlermeldung und der Zugriff wird geblockt. Das heisst, JavaScript, das von einem Server geholt wird, darf erstmal nur auf diesen Server zugreifen -  und auf keinen anderen. Diese Problematik nennt man Cross-Origin Resource Sharing.

Workaround: JSONP

Als Workaround für dieses Problem wurde JSONP entwickelt. JSONP bedeutet "JSON mit Padding". JSONP sind JavaScript-Funktionen, die per <script>-Tag eingebunden und dann im Browser ausgeführt werden. Das ist ein unschöner Workaround, da ja dem fremden Server vertraut wird und dessen Code ungesehen ausgeführt wird.

Das Tankerkönig-API unterstützt schon immer das JSONP-Format.

Access-Control-Header

Um Cross-Origin Resource Sharing ohne Workaround zu ermöglichen, unterstützen moderne Browser die "Access-Control"-Header. D.h., wenn ein Server, der Daten liefert, diese Header richtig setzt, erlaubt er es dem Browser explizit, die Daten trotzdem zu holen. Der Browser muss dann kein (potentiell böses) JSONP-Script mehr ausführen, sondern darf die Daten direkt holen.

Diese Header im HTTP-Response sehen beim Tankerkönig-API seit ein paar Tagen so aus

Access-Control-Allow-Origin: * Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept Access-Control-Allow-Methods: GET

Damit erlauben wir allen, Daten zu holen. Niemand muss sich Sorgen machen, dass ihm jemand böse Sachen uneterschiebt :-)

Links

Cross-Origin Resource Sharing (CORS)
JavaScript Object Notation JSONP



Open Data Hackathon beim Verkehrsministerium

Open Data beim Bundesverkehrsministerium

Beim BMVI läuft momentan ein Hackathon, der BMVI-Data-Run, . Es ist auch der Mobilitätsdaten-Marktplatz (MDM) dabei, über den tankerkönig.de seine Preisdaten bezieht. Ein Schritt in die richtige Richtung ist das auf jeden Fall, wenn auch die dort benutzbaren Datenquellen etwas willkürlich ausschauen. Echzeit-Benzinpreisdaten sind da leider nicht dabei.

Echtzeit-Benzinpreise unter Open-Data-Lizenz von tankerkönig.de

Wer mit Echtzeit-Benzinpreisdaten Anwendungen oder Apps entwickeln will, kann auf unser API zurückgreifen, das kostenlos unter einer Open-Data-Lizenz bereitgestellt wird. Wir beziehen die Daten auch über den MDM, bereiten Sie aber so auf, dass sie direkt in Apps und Services benutzt werden können. Mehr Infos gibt es bei https://creativecommons.tankerkoenig.de