Scuzzlebud: AJAX Request auf einen anderen Port

Hallo,

mein von localhost:80 stammendes JavaScript soll ein Request auf localhost:8080 machen. Die Sicherheitseinschränkungen verbieten das, weshalb ich ein Request auf localhost:80/Redir mache, womit die URL auf localhost:8080 umgeschrieben wird (das ist eine in den IIS eingebaute Funktion).

Wenn ich nun die Response mittels alert() ausgebe, funktioniert das im IE wunderbar. Der FireFox jedoch meint den Benutzer informieren zu müssen, dass das Dokument umgezogen ist und überklatscht mir die Reponse. Das Ergebnis: Statt meinem Datenstring steht in der Alert-Box "This document has been moved to: ..."

Wie kann ich dieses Problem umschiffen?

Über eine Antwort würde ich mich freuen.

  1. mein von localhost:80 stammendes JavaScript soll ein Request auf localhost:8080 machen. Die Sicherheitseinschränkungen verbieten das, weshalb ich ein Request auf localhost:80/Redir mache, womit die URL auf localhost:8080 umgeschrieben wird (das ist eine in den IIS eingebaute Funktion).

    Wenn du mal nach der TheSameOrigin Policy googlest, wirst du feststellen dass der IE der einzige Browser ist, der den Port bei der Rechtevergabe nicht beachtet. Im IE wirst du also generell einfach einen anderen Port ansprechen können, in anderen Browsern wird das nicht gehn.

    Einen Redirect zu verwenden ist hier schwachsinnig und führt auch zu keinem Ergebnis, ein Redirect ist genausowenig vertrauenswürdig wie eine beliebige Host-Angabe in deinem Quelltext, was du direkt nicht ansprechen kannst, kannst du auch durch den Redirect nicht ansprechen.

    Wenn ich nun die Response mittels alert() ausgebe, funktioniert das im IE wunderbar. Der FireFox jedoch meint den Benutzer informieren zu müssen, dass das Dokument umgezogen ist und überklatscht mir die Reponse. Das Ergebnis: Statt meinem Datenstring steht in der Alert-Box "This document has been moved to: ..."

    Einer der Browser verhält sich hier falsch, und ich würde mal behaupten der IE macht das. Müsste man in der Spezifikation nachlesen, ob ein XHTTPRequest einem Redirect direkt folgen soll. Der IE macht es wohl, der FF zeigt dir schlichtweg das was die URL die du ihm genannt hast zu bieten hat, und das ist nunmal diese Meldung. Das ist keine vom FF generierte Meldung, sondern von deinem Webserver.

    Wie kann ich dieses Problem umschiffen?

    Am besten wäre wohl, den Port nicht zu wechseln ;)
    Ob Zugriffe auf andere Ports möglich sind, weiß ich bei JS nicht, Flash/Java erlauben das über entsprechende Policy Dokumente.

  2. Hallo!

    Wie kann ich dieses Problem umschiffen?

    Dem was RFZ geschrieben hat möchte ich noch eine kleine Lösungsmöglichkeit anschließen.

    Die AJAX Funktion ruft eine URL auf Port 80 auf. Dieses serverseitige Skript ruft dann dir URL auf Port 8080 auf und gibt dann das Ergebnis aus Ausgabe zurück.

    mfg
      frafu