26.02.2014 Aufrufe

ADMIN Magazin Gestapelt - Schneller und sicherer mit RAID (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Openlayers<br />

GETten <strong>und</strong> POSTen<br />

Um Webseiten <strong>mit</strong> Parametern zu versorgen,<br />

wurden die Methoden GET <strong>und</strong> POST entwickelt.<br />

Bei der Methode GET werden alle Parameter<br />

an die URL-Zeichenkette nach einem Fragezeichen<br />

angehängt. Getrennt werden die einzelnen<br />

Parameter durch das Ampersand-Zeichen<br />

»&«. So ergibt sich die Schreibweise »http://<br />

url?param_1=wert_1&...&param_n=wert_n«. In<br />

der korrekten HTML-Notation ersetzt man das<br />

Ampersandzeichen durch »&amp;«, um W3Ckonform<br />

zu bleiben. Die Vorteile dieser Methode<br />

sind, dass sich eine solche URL leichter als Lesezeichen<br />

im Browser speichern lässt <strong>und</strong> man<br />

hat bei der Entwicklung stets einen Überblick,<br />

ob alle Parameter korrekt gesetzt werden. Das<br />

ist aber auch gleichzeitig der Nachteil, da potenzielle<br />

Angreifer sehen, auf welche Art <strong>und</strong><br />

Weise beispielsweise Daten aus einer Datenbank<br />

ausgelesen werden. Zudem beschränkt die Methode<br />

GET die maximale Länge der URL, sodass<br />

nur wenige Parameter nutzbar sind.<br />

Die Methode POST bietet mehr vordergründige<br />

Sicherheit. Die Parameter werden nicht mehr an<br />

die URL angehängt, sondern über einen Datenkanal<br />

(Pipe) an die Webseite über<strong>mit</strong>telt. Da<strong>mit</strong><br />

haben potenzielle Angreifer zumindest etwas<br />

mehr Probleme bei einem Angriff. Ein weiterer<br />

Vorteil ist, dass Anzahl der möglichen Parameter<br />

nahezu unbegrenzt ist. Die POST-Methode hat<br />

den Nachteil, dass es keine Möglichkeit gibt,<br />

eine URL <strong>mit</strong> allen Parametern als Lesezeichen<br />

abzulegen.<br />

Gr<strong>und</strong>sätzlich besteht auch die Möglichkeit,<br />

beide Methoden gleichzeitig zu verwenden. Das<br />

sollte man allerdings vermeiden. Einerseits entspricht<br />

es nicht den Richtlinien der W3C <strong>und</strong><br />

andererseits besteht die Möglichkeit, dass der<br />

Zugriff auf die Daten der POST-Methode nicht<br />

mehr gewährleistet ist.<br />

immer der ausgewählte Kartenausschnitt.<br />

Als Programmierer hat man die Möglichkeit,<br />

<strong>mit</strong> weiteren Layern für den Betrachter<br />

weitere nützliche Informationen<br />

anzubieten.<br />

In den Anfängen von Openlayers gab es<br />

keinen Weg, auf die in einer Datenbank<br />

vorgehaltene Datenbestände zuzugreifen,<br />

da Javascript keine Möglichkeit bietet,<br />

auf Datenbankserver zuzugreifen. Um<br />

eigene POIs darzustellen, werden aber<br />

Datenbanken benötigt.<br />

Alternativ bietet sich immer die Lösung<br />

an, alle POIs im Programmcode anzugeben<br />

beziehungsweise den zugehörigen<br />

Javascript-Code durch ein Perl- oder<br />

PHP-Skript zu erzeugen. Dies bedeutet<br />

aber, dass die Wartung solcher Seiten<br />

sich sehr schwierig gestaltet. Ebenso<br />

würde die Serverbelastung zunehmen<br />

<strong>und</strong> die Performance auf dem Client<br />

enorm abnehmen.<br />

Ein Lösungsweg, die Daten aus einer Datenbank<br />

zu beziehen, wurde in Ausgabe<br />

02/​2012 der FreeX beschrieben. Über den<br />

Umweg, dass ein CGI-Skript per Iframe<br />

Zugriff auf externe Datenbestände ermöglicht,<br />

wurden die POIs in der Karte<br />

dargestellt. Die Lösung funktioniert recht<br />

gut, ist aber nicht perfekt. Gerade dann,<br />

wenn es zu Timeouts bei der Verbindung<br />

kommt, besteht die Möglichkeit, dass<br />

Daten falsch oder gar nicht dargestellt<br />

werden. Inzwischen hat sich diesbezüglich<br />

in der Entwicklung der Javascript-<br />

Bibliothek Openlayers einiges getan. Sie<br />

bietet <strong>mit</strong>tlerweile sehr viele Wege, um<br />

auf externe Daten zuzugreifen.<br />

Openlayers bietet zwei Objekte, die den<br />

Zugriff auf externe Daten erleichtern.<br />

Sie erlauben es, <strong>mit</strong>hilfe der HTTP-Methoden<br />

GET <strong>und</strong> POST externe Seiten<br />

inklusive Parameterübergabe aufzurufen<br />

(siehe Kasten „GETten <strong>und</strong> POSTen“).<br />

Für die beiden HTTP-Methoden gibt es<br />

die Objekte »OpenLayers.Request.GET«<br />

<strong>und</strong> »OpenLayers.Request.POST«. Sie rufen<br />

eine externe Webseite auf, die durch<br />

ein CGI-Skript generiert wird. Das Skript<br />

wertet die von den Objekten über<strong>mit</strong>telten<br />

Parameter aus <strong>und</strong> generiert hieraus<br />

eine passende Datenbankabfrage.<br />

Das Ergebnis der Abfrage ist eine Datei<br />

im Plain-Text-Format, die ohne HTML-<br />

Notationen auskommt. Man sollte dieses<br />

Format wählen, weil es die weitere Verarbeitung<br />

erheblich vereinfacht.<br />

Die so generierte Seite wird an den Webbrowser<br />

zurückgesendet, wo die Callback-<br />

Funktion von »OpenLayers.Request.GET«<br />

beziehungsweise »OpenLayers.Request.<br />

POST« die Informationen verarbeitet.<br />

Die Callback-Funktion läuft erst dann ab,<br />

wenn die Webseite fertig generiert ist.<br />

Das gilt übrigens auch für den Fehlerfall,<br />

den man deshalb sinnvollerweise gesondert<br />

berücksichtigen sollte. Abbildung 2<br />

verdeutlicht den Ablauf.<br />

Datenbank <strong>mit</strong> Strategie<br />

Die beiden eben beschriebenen Objekte<br />

eignen sich sehr gut, um POIs schnell<br />

<strong>und</strong> einfach darzustellen. Ein Nachteil<br />

ist allerdings, dass es sehr aufwendig ist,<br />

eine vom Kartenausschnitt abhängige<br />

Anzahl von Punkten darzustellen.<br />

Aber auch hier bietet Openlayers inzwischen<br />

Abhilfe: »OpenLayers.Strategy.<br />

BBOX« <strong>mit</strong> »OpenLayers.Protocol.HTTP«<br />

<strong>und</strong> »OpenLayers.Layer.Vector« bilden<br />

ein unschlagbares Team zur Darstellung<br />

Abbildung 1: Die Darstellung zeigt Wetterstationen auf dem Gebiet der USA. Die geografischen Positionen<br />

wurden einer Datenbank entnommen, in der circa 20 000 Stationen gespeichert sind.<br />

www.admin-magazin.de<br />

Admin<br />

Ausgabe 06-2012<br />

107

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!