Blue Flower

 

 Ein XMLHttpRequest-Objekt erzeugen

Um mit einem XHR-Objekt arbeiten zu können, muss dieses entsprechend der Regel der eingesetzten Programmiersprache erzeugt werden. Dies erfolgt in JavaScript bekanntlich über den Einsatz einer passenden Konstruktormethode. Ein Objekt vom Typ XMLHttpRequest stellt dann alle relevanten Methoden und Eigenschaften zur asynchronen Kommunikation per AJAX bereit. Dabei können auf Basis der üblichen Übertragungsmethoden Daten verschickt bzw. Informationen angefordert und Antworten empfangen sowie der Request-Header gesetzt und ausgewertet werden.

Beachten Sie, dass mit AJAX-Anfragen aus Sicherheitsgründen in der Regel nur Daten von der gleichen Domain angefordert werden dürfen, von der die anfordernde Webseite stammt. Das ist ein oft zu findendes Sandkastenprinzip (Sandbox), das wir beim Thema Sicherheit auch schon berührt haben (Same Origin Policy). Andernfalls würde man einen so genannten Cross-Domain-Zugriff durchführen und dieser würde Missbrauch und Manipulation Tür und Tor öffnen. Allerdings ist die Einschränkung erheblich und sowohl Webdesigner als auch Browserhersteller tüfteln an Lösungen, diese Beschränkungen aufzuheben ohne die Sicherheit zu gefährden.

Nun erzwingen die verschiedenen Browserinkompatibilitäten, dass man das XHR-Objekt auf verschiedene Arten erzeugen muss, damit das Verfahren in allen relevanten Browsern funktioniert. Die Grundvorgehensweise sieht so aus:

resObjekt = new XMLHttpRequest();

Damit kommen ältere Versionen des Internet Explorers aber nicht zurecht. Sie erzwingen eine Erstellung als ActiveX-Control und das auch noch je nach Version des Browsers mit unterschiedlichen Parametern. Deshalb muss man eine automatische Unterscheidung zwischen den verschiedenen Wegen zur Erzeugung des Kommunikationsobjektes programmieren. In der Regel arbeitet man mit dem Konzept der Ausnahmebehandlung. Man versucht einfach das XHR-Objekt zu erzeugen und wenn es schief geht, versucht man einen alternativen Weg. Indem man die Versuche in eine Ausnahmebehandlung integriert, kann das Skript trotz einer fehlgeschlagenen Erzeugung des Objekts stabil weiterlaufen.