A. Henkelmann: Ajax: Serverantwort ignorieren?

Huhu!

So. Eigentlich das Übliche: wenn der User den Browser schließt, soll noch schnell ein Kommando an den Server geschickt werden, um die Usersession abzumelden. Das habe ich hinbekommen mit Ajax und onbeforeunload.
Aber: der Server sendet als Antwort einen Redirect auf eine andere Domäne. Und nun erhalte ich beim IE die sinnvolle aber unschöne Meldung, dass ein Sicherheitsproblem vorliegt, da Daten über Domänengrenzen hinweg ausgetauscht werden sollen. Mein FF leidet nur still.
Ich habe gestern stundenlang mit .abort() und .onreadystatechange probiert, aber entweder kriege ich die Meldung weg und der User bleibt angemeldet, oder die Meldung ist da und der User ist abgemeldet. Hurra. Im FF bekomme ich wenigstens die Warnmeldung weg und der User ist abgemeldet.
Also, geht das überhaupt, mit dem XMLHttpRequest-Objekt die Serverantwort zu ignorieren? Und wenn ja, wie? Oder wo kann ich das nachlesen?

Hier mein bisschen Quellcode. Könnte ich was mit den Headern machen?

if (xmlHttp) {
       xmlHttp.open('GET', strUriLogoff, true);
       xmlHttp.onreadystatechange = function(){
          if (xmlHttp.readyState > 0) {
             //alert("readystate: " + xmlHttp.readyState);
             //xmlHttp.abort();
            // alert("Header: " + xmlHttp.getAllResponseHeaders());
          }
          /*
          if(xmlHttp.status){
             alert("HttpStatus: " +xmlHttp.status);
             xmlHttp.abort();
          }*/
       };
       xmlHttp.send(null);
   }

Programmieren, kaum hat man ein Problem gelöst, taucht schon das nächste auf... :)

Vielen, vielen Dank schon mal!

Liebe Grüße
Anja  ;->

  1. hi,

    Aber: der Server sendet als Antwort einen Redirect auf eine andere Domäne. Und nun erhalte ich beim IE die sinnvolle aber unschöne Meldung, dass ein Sicherheitsproblem vorliegt, da Daten über Domänengrenzen hinweg ausgetauscht werden sollen.

    Ja wenn der Redirect das Problem ist - wieso gewöhnst du ihn deinem "Server" bzw. dem Script nicht einfach ab?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Huhu!

      Aber: der Server sendet als Antwort einen Redirect auf eine andere Domäne. Und nun erhalte ich beim IE die sinnvolle aber unschöne Meldung, dass ein Sicherheitsproblem vorliegt, da Daten über Domänengrenzen hinweg ausgetauscht werden sollen.

      Ja wenn der Redirect das Problem ist - wieso gewöhnst du ihn deinem "Server" bzw. dem Script nicht einfach ab?

      Naja, wenn es *so* einfach wäre, würde ich die geneigte Leserschaft hier nicht damit langweilen. ;)
      Die Anwendung auf dem Server entzieht sich völlig meiner Kontrolle, weil das eine SAP-Anwendung in ABAP mit dem ITS ist. Zum Abmelden einer Usersession klickt man entweder auf den Link "Abmelden" oder, was ich jetzt mache, schickt neben anderen Dingen noch ein Kommando an den ITS. Dieses Kommando sorgt dafür, dass die Usersession korrekt beendet wird, die Anwendung korrekt beendet wird und alle glücklich sind. :)
      Ich *muss* also das XMLHttpRequest-Objekt nehmen.
      Oder geht's doch anders?

      Liebe Grüße
      Anja  ;->

      1. Die Anwendung auf dem Server entzieht sich völlig meiner Kontrolle, weil das eine SAP-Anwendung in ABAP mit dem ITS ist.

        Bearbeitet nicht zufällig die Doku oder der Support diese Fragestellung?

        1. Huhu!

          Die Anwendung auf dem Server entzieht sich völlig meiner Kontrolle, weil das eine SAP-Anwendung in ABAP mit dem ITS ist.

          Bearbeitet nicht zufällig die Doku oder der Support diese Fragestellung?

          Hä? Die Frage habe ich leider nicht verstanden. Welche Doku/Support soll welche Fragestellung bearbeiten?

          Liebe Grüße
          Anja  ;->

          1. Die Anwendung auf dem Server entzieht sich völlig meiner Kontrolle, weil das eine SAP-Anwendung in ABAP mit dem ITS ist.

            Bearbeitet nicht zufällig die Doku oder der Support diese Fragestellung?

            Hä? Die Frage habe ich leider nicht verstanden. Welche Doku/Support soll welche Fragestellung bearbeiten?

            Die von Dir nicht kontrollierbare SAP-Anwendung, die Du aber in Deinem Code konnektierst.

            1. Huhu!

              Bearbeitet nicht zufällig die Doku oder der Support diese Fragestellung?

              Hä? Die Frage habe ich leider nicht verstanden. Welche Doku/Support soll welche Fragestellung bearbeiten?

              Die von Dir nicht kontrollierbare SAP-Anwendung, die Du aber in Deinem Code konnektierst.

              Ja? Und wo ist der Rest von dem Satz? ;)
              Tut mir leid, ich verstehe wirklich nicht, was du mir sagen/was du mich fragen willst.
              Falls es um den SAP-Support gehen sollte, die mir dabei evtl. weiterhelfen könnten:
              1. Clientseitiges Scripting ist mein Ding und die können mir dabei nicht helfen.
              2. Hast du mal deren Hilfeseiten gesehen?!?!! *grusel*
              3. Die Anwendung wird bei uns programmiert. (Ein Programm, das auf SAP aufsetzt, hat aber mit meinem Problem absolut nichts zu tun.)
              4. Dieser Redirect bleibt bestehen. Er ist Bestandteil des Programms und wird nicht geändert.

              Also, kann das XMLHttpRequest-Objekt eine Serverantwort ignorieren? Bzw. wo kann ich das nachlesen?

              Liebe Grüße
              Anja  ;->

              1. Tut mir leid, ich verstehe wirklich nicht, was du mir sagen/was du mich fragen willst.

                Jaaa, versuchen Wirs mal anders, Du hast eine AJAX-Logik, die mit einem AJAX-Server kommuniziert. Nun passiert was genau? Deine AJAX-Logik versucht einen parameterisierten Request an einen anderen Server zu senden, was wiederum vom IE mit der bekannten Meldung angemängelt wird, richtig?

                1. Huhu!

                  Tut mir leid, ich verstehe wirklich nicht, was du mir sagen/was
                  du mich fragen willst.

                  Jaaa, versuchen Wirs mal anders, Du hast eine AJAX-Logik, die mit einem AJAX-Server kommuniziert. Nun passiert was genau? Deine AJAX-Logik versucht einen parameterisierten Request an einen anderen Server zu senden, was wiederum vom IE mit der bekannten Meldung angemängelt wird, richtig?

                  Nein.
                  Ich schicke einen Get-Request an denselben Server. Der schickt als Antwort einen Redirect.
                  Und es ist auch kein AJAX-Server.
                  Sorry, wenn ich das so mißverständlich formuliert hatte.
                  Den Request schicke ich an genau denselben Server zurück, von dem ich die entsprechende Seite auch bekommen habe. Aber nach dem Abbmelden der User-Session auf dem Server antwortet der mit einem Redirect auf eine andere Domain.
                  Die Antwort verursacht die Probleme, nicht der Request an sich.

                  Liebe Grüße
                  Anja  ;->

                  1. Die Antwort verursacht die Probleme, nicht der Request an sich.

                    Dann hast Du es wohl mit einem Leistungsmerkmal des IE zu tun. Empfehle den Nutzern die Warung, falls Formulardaten umgelenkt werden zu deaktivieren.

                    1. Huhu!

                      Die Antwort verursacht die Probleme, nicht der Request an sich.

                      Dann hast Du es wohl mit einem Leistungsmerkmal des IE zu tun. Empfehle den Nutzern die Warung, falls Formulardaten umgelenkt werden zu deaktivieren.

                      Och, schade. Ich hatte so sehr gehofft, es gäbe einen Workaround.
                      Aber trotzdem danke für die Hilfe!

                      Liebe Grüße
                      Anja  ;->

  2. Eigentlich das Übliche: wenn der User den Browser schließt, soll noch schnell ein Kommando an den Server geschickt werden, um die Usersession abzumelden.

    Das ist keine gute Idee, wenn sich Dein System darauf verlassen muss, Sitzungen sollten immer austimen.

  3. Hi,

    Aber: der Server sendet als Antwort einen Redirect auf eine andere Domäne. Und nun erhalte ich beim IE die sinnvolle aber unschöne Meldung, dass ein Sicherheitsproblem vorliegt, da Daten über Domänengrenzen hinweg ausgetauscht werden sollen.

    Wie wäre es mit einem serverseitigen Mechanismus, den Du problemlos aufrufen kannst, und das die Abmeldung vornimmt?

    Kann ein PHP- oder sonstiges Script sein, bzw. mittels Proxy-Funktionalität (Apache: mod_proxy) kann man auch ansonsten bei JS-only bleiben und auf PHP & Co. verzichten.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!