Und noch ein Bug in ASP.NET AJAX (Cross-Domain-Frameset-Problem)

Der Dotnet-Doktor  –  0 Kommentare

Im Februar hatte ich ja schon über Schwächen im ASP.NET AJAX Control Toolkit berichtet. Diese Woche meldete sich einer unserer Kunden, bei dem Microsofts AJAX Control Toolkit-Steuerelemente nicht funktionieren, wenn Framesets zum Einsatz kommen, die auf verschiedenen Servern liegen ("Cross Domain Frame").

Randbemerkung: Nein, die ewige Diskussion über Framesets werden ich jetzt hier nicht führen. Unser Kunde hat gute Gründe, die Framesets einzusetzen!

"Zugriff verweigert" ("Access denied") meldet der Internet Explorer, sobald das Frameset nicht auf demselben Server liegt wie der Inhalt. In Zusammenhang mit AJAX-Webservice-Arufrufen (Web-RPC) war mir diese Meldung schon bekannt, denn aus Sicherheitsgründen darf ein XMLHttpRequest nur zum selben Server gehen. In diesem Fall aber gab es gar keinen Roundtrip zum Server: Die eingesetzten AJAX Controls waren rein clientseitige Steuerelemente, die eigentlich nichts mit AJAX mit engeren Sinne zu tun haben (DHTML-Widgets wäre hier der bessere Name!) und daher auch keine Web-RPC verwenden.

Interessanterweise tritt der Fehler nur im Internet Explorer auf; der Firefox hatte keine Probleme. Dies passte zu den AJAX-Kuriositäten, die ich schon im Februar beobachtet hatte.

Nach etwas Recherche stieß ich auf Blogeinträge [1] [2], in denen Microsoft kleinlaut Fehler in der ASP.NET AJAX und dem Control Toolkit zugibt: "And this is where we made a mistake, unfortunately too late." [1].

Was mich noch mehr aufregt als die Tatsache, dass ASP.NET AJAX mit "heißer Nadel" gestrickt wurde ist, dass es nicht mal ein offizielles Update gibt, sondern wir Benutzer das uns von Microsoft eingeräumte Recht zur Veränderung des Quellcodes (siehe mein Blogeintrag zum Erscheinen von ASP.NET AJAX im Januar) dazu nutzen sollen, die Pannen in den JavaScript-Quellcode-Dateien selbst zu flicken. Die verbesserten JavaScript-Dateien zur Lösung des Cross-Domain-Frameset-Problems nebst einem Beispiel zum Test habe ich daher gerade auf meinem Webserver für jedermann zur Verfügung gestellt.