AJAX ist der Hype im Internet. Wofür benutzt man AJAX? Welche Vor- und Nachteile hat AJAX? Was ist asynchrone Kommunikation? Ist Ajax wirklich schneller? Gibt es Sicherheitsrisiken? Was heißt Sandbox?
Ajax steht für „Asynchronous JavaScript And XML“ und ermöglicht durch asynchrone Datenübertragung eine HTTP-Anfrage in einer HTML-Seite mittels JavaScript, ohne die Seite vollständig neu zu laden. Nur punktuell benötigte Informationen, also Teile einer HTML-Seite oder auch reine Nutzdaten, werden sequenziell nachgeladen.
Asynchrones Kommunikationskonzept
Der Begriff Ajax wurde 2005 durch Jesse James Garrett geprägt. Dabei handelt es sich nicht um eine wirklich neue Technologie – Ajax verbindet vielmehr verschiedene bereits länger bekannte Ideen und Techniken zu einem Kommunikationskonzept im Web:
- JavaScript als clientseitige Programmiersprache und als Schnittstelle der einzelnen Komponenten und zur dynamischen Darstellung der Inhalte.
- Das XMLHttpRequest-Objekt, um Daten asynchron mit dem Webserver austauschen zu können (vgl. das Working-Draft des W3C:[W3C08] ).
- Das Document Object Model (DOM) zur dynamischen Verarbeitung bzw. Repräsentation der vom Server gelieferten der Daten oder Inhalte.
- Präsentation auf Basis von (X)HTML.
- Als Übertragungsformate XML, Plaintext oder JSON.
Ajax funktioniert sehr ähnlich dem oben beschriebenen Konzept, indem ein Agent – nämlich die Ajax-Engine – in die Kommunikation zwischen Client und Server eingeschaltet wird.
Schnellere Übertragung im Web
Neben diesem Kommunikationsmittler, der Ajax-Engine, verschlankt und beschleunigt Ajax die Kommunikation an einer weiteren Stelle: Klassische Webanwendungen auf der Basis synchroner Kommunikation übermitteln Formulare, die zuvor vom Benutzer ausgefüllt wurden, an einen Webserver.
Der Webserver bearbeitet den Request und antwortet, indem er dem Browser eine entsprechend den zuvor übermittelten Formulardaten neu generierte Webseite schickt. Der Webserver erzeugt also bei jeder Anfrage seitens des Nutzers eine neue Webseite und muss diese übermitteln, was die Webapplikation verlangsamt, denn während der Übertragung und Bearbeitung ist sie ja blockiert.
Häufig müsste sich aber nur ein Teil der Webseite verändern, z.B. muss beim Bild-Upload nur der Bereich neu geladen werden, der das Bild anzeigt – der Navigations- und weitere Inhaltsbereich der Webseite ändert sich nicht und müsste folglich nicht noch einmal vom Webserver übertragen werden. Genau dies macht sich das Ajax-Konzept zunutze: Ajax-Anwendungen schicken Requests an den Server, die nur diejenigen Daten anfordern, die tatsächlich gebraucht werden. Die Übertragung selbst erfolgt mittels der Ajax-Engine asynchron, sodass der Benutzer währenddessen weiterhin mit der Webseite interagieren kann. Sind die Daten geladen, wird eine JavaScript-Funktion aufgerufen, die die Daten in die Webseite einbinden kann. Dies hat nicht nur den Vorteil eines größeren Komforts durch die Beschleunigung der Webapplikation selbst, die ja auf die Übertragung geringerer Datenmengen „warten“ muss. Damit kann auch das Problem der gewöhnlich zustandslosen Webanwendung umgangen werden, denn so können beispielsweise Sitzungsinformationen über mehrere HTTP-Transaktionen hinweg beibehalten werden.
GoogleMaps und GoogleSuggest verwenden AJAX
Weltweite Aufmerksamkeit erregte das Ajax-Konzept durch die Implementierung in mehreren Services von Google. So kann in GoogleMaps mit Hilfe von Ajax navigiert werden, bei einem Zoom-In wird beispielsweise nicht die ganze Seite neu geladen, sondern nur die Bilder der Landkarte. In GoogleSuggest wird beim Tippen in die Suchleiste ein Quicktipp mit AutoVervollständigung angezeigt. Der Quicktipp wird abhängig vom Eintrag in das Suchfeld neu zusammengestellt, d.h. die Eingabe eines jeden neuen Buchstabens erzeugt eine veränderte Quicktipp-Liste. Technisch wird dies realisiert, indem das Suchfeld auf einen OnChange-Event mit einem Ajax-Request reagiert. Dieser aktualisiert nur den Quicktipp und nicht die gesamte Seite. Die Prozesse sind so schnell, dass beim Anwender der Eindruck entsteht, eine Desktop-Applikation zu bedienen.
Vor- und Nachteile von AJAX
Größter Vorteil des Ajax-Konzepts ist, dass nur die wirklich relevanten Daten übertragen werden, sodass Webanwendungen auf Benutzereingaben schneller reagieren und redundanter Datentransfer vermieden wird, da die statischen Daten, wie z.B. die Grundstruktur der HTML-Seite und die Navigation, die sich nicht geändert haben, nicht fortwährend übertragen werden müssen.
Ajax baut auf weithin unterstützte Technologien auf und benötigt – anders als Java-Applets oder Flash – kein Browser-Plugin. Nachteilig kann sich aber auswirken, dass die JavaScript-Unterstützung – z.B. in Firmennetzen – häufig deaktiviert ist und nicht alle Browser JavaScript unterstützen. Ein anderer Nachteil ist z.B., dass die Verwendung des Zurück-Buttons des Browsers, welche ja für reguläre HTTP-Requests konzipiert ist, nur über Umwege gewährleistet werden kann.
Im Gegensatz zu bisherigen ausschließlich im Browser laufenden Webapplikationen können mit Ajax Teile der Applikation auf einen Server ausgelagert und dort ausgeführt werden. Der Umfang des zu ladenden JavaScript sinkt damit und die Verarbeitungskapazität wird primär vom Server und nicht mehr vom Client bereitgestellt. So ist eine effizientere Entwicklung browser-basierter Anwendungen möglich und eine Ajax-Anwendung erscheint dem Benutzer wie eine auf dem eigenen PC laufende Anwendung.
Ein generelles Problem asynchroner Übertragungen ist jedoch, dass der Übermittlungsprozess sofort abgebrochen wird, wenn der Nutzer währenddessen einen synchronen Vorgang auslöst, z.B. durch den Klick auf die Schaltfläche „Aktualisieren“ oder auf einen synchron ausgelegten Link in der Webseite. Hinderlich kann auch sein, dass zwischen einer HTTP-Anfrage des Browsers und der zugehörigen Server-Antwort eventuell ein gewisses Intervall, die Latenzzeit, liegt, sodass der Eindruck entstehen kann, die Anwendung reagiere langsam. Deshalb werden meist bei Hintergrundaktivitäten visuelle Rückmeldungen für den Benutzer verwendet (z.B. das Symbol einer Sanduhr).
Sicherheitsrisiko
Das größte Problem der Ajax-Technologie für den Upload ist das Sandbox-Verhalten von JavaScript: Aus Sicherheitsgründen soll JavaScript nur Zugriff auf Objekte des Browsers erhalten, kann nicht auf das Dateisystem zugreifen und ist nicht fähig, lokale Dateien zu lesen oder zu schreiben. Ohne die explizite Erlaubnis des Benutzers sind auch andere Aktionen nicht möglich, wie z.B. das Auslesen der zuletzt besuchten Webseiten des Anwenders. Die „Same Origin Policy“ schreibt außerdem vor, dass ein von einem Webserver geladenes JavaScript-Programm nur Zugriff auf Eigenschaften derjenigen Objekte hat, die vom selben Ort wie das JavaScript stammen. „Damit soll ausgeschlossen werden, dass fragwürdige Webseiten Zugriff auf die Daten von anderen mit dem Browser geöffneten Dateien oder Webseiten erhalten.“!!!!! JavaScript-Webanwendungen haben keinen Zugriff zu Informationen wie Username, Passwörtern oder Cookies anderer besuchter Webseiten. Sicherheit versprechen zwar Signaturen, die mit dem sich der Entwickler identifiziert – ob der Entwickler vertrauenswürdig und kompetent ist, darüber sagt eine Signatur nichts aus.
JavaScript kann deswegen nur auf die Bestandteile des geladenen Dokumentes zugreifen und dieses ändern, auf Benutzeraktionen reagieren oder das Browser-Fenster-Management übernehmen. Damit kann das Ajax-Kommunikationskonzept für den eigentlichen Datei-Upload nicht eingesetzt werden. Lediglich für das Anzeigen und Löschen der Bilder sowie für Fehlermeldungen könnte es verwendet werden.