Anzeige
Anzeige
UX & Design

Mit XMLHttpRequests über Domaingrenzen hinweg kommunizieren: Neue W3C-Spezifikationen für das Web 2.0

In dem Arbeitspapier „Enabling Read Access for Web Resources“ spezifiziert das W3C eine Technologie, welche die für das Web 2.0 zu restriktive „Same Origin Policy“ aufweicht. Damit existiert erstmals eine standardkonforme Möglichkeit, mit einem XMLHttpRequest auf Daten außerhalb der Ursprungsdomain zuzugreifen.

3 Min.
Artikel merken
Anzeige
Anzeige

Zwischen vielen anderen, häufig in einem Atemzug mit Web 2.0 genannten Schlagworten und Konzepten stechen vor allem die Mashups heraus. Sie benennen die naheliegende Idee der Vermischung diverser Dienste und Datenquellen, die innerhalb einer Webapplikation bisher nur auf dem Server zufriedenstellend zu bewältigen war. Auf dem Client verhindert die „Same Origin Policy“ den Zugriff auf Dokumente aus fremden Domains, die zum Beispiel über Frames eingebunden sein können. So teilen sich seit den seligen Zeiten von Netscape 2.0 alle aus einer Domain stammenden Dokumente eine Sandbox innerhalb der vom Browser bereitgestellen Sandbox. Das macht Sinn, verhindert aber auch, dass aktuelle Implementierungen von XMLHttpRequests auf Resourcen fremder Domains zugreifen. Das verhindert die Kommunikation mit den zahllosen Web-APIs, die mittlerweile auch von Mainstream-Sites angeboten werden. Sie können bisher nur mithilfe von Tricks wie der Kommunikation mittels Query-String oder dem extrem unsicheren Remote Scripting genutzt werden. Der prinzipiell offenen Philosophie von Mashups schiebt der Client so einen Riegel vor, sodass saubere, standardkonforme und auch sicher „gemashte“ Webapplikationen noch Zukunftsmusik sind.

Anzeige
Anzeige

In einem Entwurf beschreibt das W3C nun einen Mechanismus, mit dem HTTP-Requests auf fremde Domains erlaubt werden, sodass nicht sofort die Same Origin Policy zuschlägt. Dafür signalisiert der Server, welchen Domains er den Zugriff gestattet. Das geschieht entweder über einen in der Response gelieferten „Access-Control“ HTTP-Header oder eine im Dokument eingebettete „<?access-control?>“ XML-Processing-Instruction, die vom Browser nacheinander ausgewertet werden. Der Zugriff wird nur dann gestattet, wenn die Host Domain auf ein Muster aus der Positivliste passt und nicht explizit auf eines in der Negativliste.

Die Listen werden durch entsprechende „allow“- oder „deny“-Regeln gebildet, in denen als „Access Items“ bezeichnete simple URI-Pattern definiert werden. Sie dürfen ein Schema, Domain Patterns mit Wildcards und einen Port enthalten.

Anzeige
Anzeige
XML
Access-Control allow <*>
Access-Control allow <http://blog.formatvorlage.de>
Access-Control allow <*.formatvorlage.de> <http://foobar.com>
Access-Control deny <nastyleecher.com:80>
<?access-control allow="*.formatvorlage.de http://foobar.com"?>

Listing 1

Komplexere Setups, die wegen der Priorität der Negativ- vor der Positivliste nicht möglich wären, können mit einem zusätzlichen „exclude“ realisiert werden.

Anzeige
Anzeige
XML
<?access-control allow="*.formatvorlage.de" exclude="*.dev.formatvorlage.de"?>
<?access-control allow="t3.dev.formatvorlage.de"?>

Listing 2

Im angeführten Beispiel dürfen alle Subdomains von „*.formatvorlage.de“ mit Ausnahme von „*.dev.formatvorlage.de“ auf die Ressource zugreifen. Zusätzlich wird der Zugriff „t3.dev.formatvorlage.de“ gestattet.

Die neue Firefox Version 3 unterstützt die neue Technologie ab dem Developer-Release Alpha 7. Beim Testen des HTTP-Headers mit Firefox ist darauf zu achten, dass als HTTP-Header zurzeit noch „Content-Access-Control“ anstatt „Access-Control“ verwendet wird. In Firebug ist zu beobachten, wie jeder Request, unabhängig vom Ziel, ausgeführt wird. Lediglich die Properties „resultText“ und „resultXML“ enthalten bei nicht gestattetem Zugriff einen Leerstring, „status“ und „statusText“ enthalten aber keinen Hinweis.

Anzeige
Anzeige

Offen und trotzdem sicher

Es mag auf den ersten Blick paradox erscheinen, doch die Spezifikation trägt langfristig nicht nur zu einem offeneren, sondern auch zu einem sichereren Web bei. Das gilt vor allem in Hinblick auf die dadurch möglich gewordene Ablösung von JavaScript-On-Demand, bei dem mit dynamischen <script>-Elementen der Zugriff auf fremde Ressourcen auch heute bequem möglich ist. Das ist allerdings bei nicht vertrauenswürdigen Quellen eine äußerst unsichere Methode, weil dadurch auf einfache Weise Code in eine Applikation eingeschleust werden kann.

Die Arbeit des W3C stellt einen Schritt in die richtige Richtung dar, es sind aber weiterhin Fragen offen. Auch wenn der Mechanismus prinzipiell unabhängig ist, bleibt seine Wirkung auf die Verwendung von XMLHttpRequests beschränkt. Sie liefert aber keinen Status zurück, sodass die Same Origin Policy für die Kommunikation zwischen verschiedenen Frames weiterhin bestehen bleibt. Um dieses Manko zu überwinden, schlägt der JSON-Erfinder Douglas Crockford das Element <module> vor, das vergleichbar einem Iframe fremde Inhalte einbindet und die kooperative Kommunikation mittels „send/receive“-Methoden und JSON gestattet. Seiner Feststellung, dass die Webapplikationsentwicklung mittlerweile einen signifikanten Vorsprung vor der Browsertechnologie besitzt und ein differenzierteres Sicherheitsmodell benötigt, ist folglich nichts hinzuzufügen. Vor dem Hintergrund des großen Interesses an diesem Thema und der zahlreichen Diskussionen über mögliche Lösungsansätze sind aber bereits in naher Zukunft weitere spannende Entwicklungen zu erwarten.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige