Andreas: wer hat schuld? IE, NS, der SSL-Server; oder doch wieder ich?

Moin,

ich habe derzeitig ein Problem, dass ich inzwischen nicht weiter einkreisen kann:

Nach einer Ueberpruefung von Formulardaten gibt es ein Redirect zur naechsten PHP-Seite. Dieser Redirect funktioniert mit NS 4.5 wunderbar; beim IE 6.0 kommt die Fehlermeldung, dass er die Seite nicht anzeigen (es ist nicht die uebliche redirect-Fehlermeldung: "konnte keine Header-Dateien mehr anhaengen, weil...").
Wenn ich mir die Ziel-URI vor dem Redirect ausgeben lasse und in die URL-Zeile paste, wird die Seite korrekt aufgerufen. Zuerst habe ich eine relative URI benutzt, im Forumarchiv dann aber den Hinweis gefunden, dass nur absolute per Standard benutzt werden sollten. Dies brachte aber leider keinen Unterschied.

Ich rufe die Zieldatei auf und uebergebe ihr eine Variable x. Der Wert der Variablen ist ein verschluesselter query-string, der darueberhinaus mit base64_encode ein bisschen unkenntlicher gemacht wurde. Wenn ich den query-string unverschluesselt und ohne base64_encode uebergebe, funktioniert es auch im IE.
Wohlgemerkt, der Wert der Variablen x ist sehr lang, aber das duerfte eigentlich nicht stoeren, solange ich die Maximallaenge fuer einen querystring nicht uerberschreite, oder?

Wenn einer eine Idee hat, waere ich sehr dankbar.
Vielen Dank,

Andreas.

  1. Hi,

    Nach einer Ueberpruefung von Formulardaten gibt es ein Redirect zur naechsten PHP-Seite.

    wie sieht der Response-Header _exakt_ aus?

    "konnte keine Header-Dateien mehr anhaengen, weil...").

    Hm, gerade das "weil" würde mich brennend interessieren :-)

    Schalt auch mal bitte bei

    Extras > Internetoptionen > Erweitert
    [ ] Kurze HTTP-Fehlermeldungen

    aus (ich hoffe, die Einstellung ist immer noch dort).

    Cheatah

    --
    X-Will-Answer-Email: No
    1. Moin,

      vielen Dank erst mal.

      Hi,

      Nach einer Ueberpruefung von Formulardaten gibt es ein Redirect zur naechsten PHP-Seite.

      wie sieht der Response-Header _exakt_ aus?

      wie kann ich im Internet Explorer den HTTP-Header ausgeben? Habe nix gefunden...

      "konnte keine Header-Dateien mehr anhaengen, weil...").

      Hm, gerade das "weil" würde mich brennend interessieren :-)

      "Warning: Cannot add more header information - the header was already sent (header information may be added only before any output is generated from the script - check for text or whitespace outside PHP tags, or calls to functions that output text) in seite.php on line 33"
      Diese Meldung kommt aber nicht!!, aber die war es, die ich an der Stelle meinte.

      Schalt auch mal bitte bei

      Extras > Internetoptionen > Erweitert
      [ ] Kurze HTTP-Fehlermeldungen

      aus (ich hoffe, die Einstellung ist immer noch dort).

      Gibt's noch, hat die Laenge der Fehlermeldungen aber nicht veraendert.

      Cheatah

      1. Hi,

        wie sieht der Response-Header _exakt_ aus?
        wie kann ich im Internet Explorer den HTTP-Header ausgeben? Habe nix gefunden...

        ein Browser ist nicht die einzige Art von Client. Schreibe Dir selbst einen, welcher den Header ausgibt. Ob das mit PHP einfach lösbar ist, kann ich Dir nicht sagen; mit Perl und LWP::UserAgent ist das aber kein Thema. Ansonsten installiere Dir einen Proxy, der derartiges mitloggen kann.

        Ich meinte aber in erster Linie die Header, die Du im PHP-Code notiert hast und daher kennen solltest :-) oder durch eine simple Ausgabe (statt des Headers himself) nachvollziehen kannst.

        "Warning: Cannot add more header information

        Ach herrje. Diese (browserunabhängige) PHP-Meldung weist Dich darauf hin, dass das Script keinen header() mehr setzen kann, weil dies _vor_ jeder anderen Ausgabe - inklusive Leerzeichen und -zeilen - stattfinden muss. Entferne also alle vorhergehenden Ausgaben des Scripts.

        Diese Meldung kommt aber nicht!

        Hm?

        aus (ich hoffe, die Einstellung ist immer noch dort).
        Gibt's noch, hat die Laenge der Fehlermeldungen aber nicht veraendert.

        Das liegt daran, dass die Fehlerseite keine war, sondern es sich einfach um eine Fehlermeldung innerhalb einer "normalen" (Status 200) Scriptausgabe handelte. Zumindest wirst Du in Zukunft aber bei HTTP-Fehlern auch die zugehörige, im Gegensatz zur IE-Variante oft sogar aussagekräftige Meldung erhalten :-)

        Cheatah

        --
        X-Will-Answer-Email: No
        1. Hi,

          wie sieht der Response-Header _exakt_ aus?
          wie kann ich im Internet Explorer den HTTP-Header ausgeben? Habe nix gefunden...

          ein Browser ist nicht die einzige Art von Client. Schreibe Dir selbst einen, welcher den Header ausgibt. Ob das mit PHP einfach lösbar ist, kann ich Dir nicht sagen; mit Perl und LWP::UserAgent ist das aber kein Thema. Ansonsten installiere Dir einen Proxy, der derartiges mitloggen kann.

          Das Problem ist ja, dass es mit anderen Clients - zumindest dem NS Browser - funktioniert, so dass ich dann den HTTP-Header von der in der php-Zieldatei erstellten HTML-Seite bekomme, der in Bezug auf mein Problem nicht aussagekraeftig ist.
          Aber den HTTP-Header wolltest du ja eh nicht. Also, hier ein Code-schnipsel:

          $url = "https://www.sslserver.com/sendMail.php?";
             while (list($key, $value) = each($HTTP_POST_VARS))
             {
             $query .= "$key=$value&";
             }
             $query .= "InfosPaiement=$InfosPaiement";
             $x = base64_encode($query);
             header("Location: $url"."x=$x");

          Folgende URI wird aufgerufen:
          https://www.sslserver.com/sendMail.php?x=Y29uZmlybWF0aW9uPXRydWUmcmVkaXJlY3Q9aHR0cHM6Ly93d3cuc2VydmV1cnNzbC5jb20vfmtpc29sdXRpb25zL3Bhbm9yYW1pZGUvY29uZmlybS5waHAmY2F0PTYmc2VudD10cnVlJmF1c3dhaGw9cmVnaXN0cmF0aW9uJmVtYWlsPWFrbGF0dEBraXNvbHV0aW9ucy5jb20mU2l0ZT1QYW5vcmFtaWRlJmxhbmc9ZnJhJmZpcm1lbm5hbWU9c3MmYW5yZWRlPWZyYWV1bGVpbiZuYWNobmFtZT1TdHVybSZ2b3JuYW1lPUlua2VuJmt1bmRlbm51bW1lcj0yMTEzMjEzMiZhbnphaGxTZXJOcj00JnJlZGlyZWN0X3F1ZXJ5PWF1c3dhaGw0dTd5cmVnaXN0cmF0aW9ufHxjYXQ0dTd5Nnx8bGFuZzR1N3lmcmF8fGFjdGlvbjR1N3ljb25maXJtJlNlck5yXzE9MzIxMzI0NiZTZXJOcl8yPTU1NTU1NTUmU2VyTnJfMz0yMjIyMjImU2VyTnJfND0xMTExMSZzdWJtaXQ9V2VpdGVyJkluZm9zUGFpZW1lbnQ9JTklMjAlMjMxJTEyMyUxOSUxOTklMTA1JTEwMyUyJTQwJTE4JTE0JTY0JTc0JTExNCUxMzIlODYlMiUyMjUlMTAzJTE0OSUxMzclNTIlMTAxJTEyNiU1MCUxOCUyNSUxNSU3MSUxMjIlMjEyJTIxJTU1JTI0MiUxMDMlMTklMjE5JTExMSU1MiU1NiUzNyUzJTc1JTkyJTc1JTExMSUyMTIlOSUyMCUyMzElMTIzJTE5JTE5OSUxMDUlMTAzJTMxJTUyJTExJTEzMCUxOCU3MCU2MSUxNDIlODAlNzElMjQwJTEwMSUyMSUyMDQlOTYlNDUlMTEzJTEyMyU5MCU2OCUxOSU5MyUxMTElMTMzJTkxJTAlMTczJTQxJTc4JTE1MiU2MyUxMDYlOTklMTEyJTg1JTg5JTkyJTc1JTExMSUyMTIlOSUyMCUyMzElMTIzJTE5JTE5OSUxMDUlMTAzJTIwJTQ3JTE4JTI1JTUlODklMTExJTEzMSU3MCUyJTE3OSU1MSU2NCUxMzQlMTI1JTQ1JTM1JTQ2JTglMTIlOTQlOSUxMTAlMTUzJTklNSUyMjUlNTUlNjQlMjE4JTEyMiU0MyU2MiU0NyUxJTg1JTQ4JTkxJTEyMCUxMzIlOTAlMTAlMTc5JTUxJTY0JTEzNCUxMjUlNDUlMzUlNDYlOCUxMiU5NCU5JTg0JTEzMiU5NCUyJTI1MyU1MyUzMCUyMTklNDglMTAxJTM0JTUzJTIwJTQlMTQlNzglMzUlMTY0JTkwJTEwJTE3OSU1MSU2NCUxMzQlMTI1JTQ1JTM1JTQ2JTglMTIlOTQlOSU3OCUxNTglNjQlMjElMjU0JTUzJTMwJTIxOSU0OCUxMDElMzQlNTMlMjAlNCUxNCU3OCUzNSUxNzUlMjQlMTAlMjQyJTk2JTE2JTEzNyU1MiUxMDElMTI2JTUwJTE4JTI1JTE1JTcxJTEyMiUyMTIlMjElNiUyNDglMTAxJTI5JTIyMSUxMjIlMjUlNTglNDAlMjElNCUxMiU5MiUxMDUlMTMxJTkwJTklMjI0JTM5JTMxJTE5OCU5OSUxMDElNTElNTElODglODclMTklOTMlMTExJTEzMyU5MSUwJTE3MyU3MSU5JTE5NiUyMzElNDMlNjIlOTclMiUxNCU2NCU5MSUxMjAlMTQxJTkyJTIwJTIzMSUxMjMlMjklMjIxJTEwMyU1NCU2MyU5NyU5MiU4NyU3OSU5MCUxMDUlMTUyJTkwJTklMjQ0JTU1JTkyJTE1NCU2MCUxMDQlOTglMTE1JTgyJTkzJTkyJTc1JTExMSUyMTIlOSUyMCUyMzElMTIzJTE5JTE5OSUxMDUlMTAzJTMxJTUyJTExJTEzMCUxOCU3MCU2MSUxNDIlODAlNzElMjI1JTEwOCUyNyUxOTIlMTI1JTQ1JTM1JTMyJTE4JTIlMTUlNzElNjElMjA4JTklNzIlMjI0JTEyNSUxNCUxOTglOTYlNjIlMTExJTk3JTgzJTk0JTg1JTI4JTQwJTIyMyUwJTkxJTI0MSUxMjMlNjYlMTQ5JTEyNSU0NSUzNSU0NiU4JTEyJTk0JTEwMyUxMDQlMTM1JTIyMCUyMSUyNTIlNDElMjQlMjA0JTQ2JTQzJTUyJTM4JTE1JTI0JTIwJTkxJTEyNCUxNTglOTIlOCUyNTMlNDElNzAlMTQ5JTMzJTQyJTM3JTUxJTklNSU3JTIzJTYxJTIxNiU3JTg1JTE2MSU1OSU3OCUxNDklMTA4JTQzJTExMSUxMjUlMjElMzElMTglNzAlMTE1JTE0MSUxMSU0MSUyMzAlMTAwJTE0OSUyMTklOTclMTIxJTUzJTM2JTcwJTI1JTUlNzglMTE2JTE1MyU2NSUyMSUyNDIlMTI1JTIxJTE5OCU5NiUxMjElMTA3JTEyNSU3MyUyNCUyMCU5MSUxMTQlMTMyJTgyJTg5JTE3OSU1NiU3NyUxNTIlNjMlMTA0JTEwOSUzNSUyMCU4NQ

          Hoffe, das hilft :)

          Ich meinte aber in erster Linie die Header, die Du im PHP-Code notiert hast und daher kennen solltest :-) oder durch eine simple Ausgabe (statt des Headers himself) nachvollziehen kannst.

          "Warning: Cannot add more header information

          Ach herrje. Diese (browserunabhängige) PHP-Meldung weist Dich darauf hin, dass das Script keinen header() mehr setzen kann, weil dies _vor_ jeder anderen Ausgabe - inklusive Leerzeichen und -zeilen - stattfinden muss. Entferne also alle vorhergehenden Ausgaben des Scripts.

          Diese Meldung kommt aber nicht!

          Hm?

          s. erstes Posting:
          "...beim IE 6.0 kommt die Fehlermeldung, dass er die Seite nicht anzeigen (es ist !!! nicht !!! die uebliche redirect-Fehlermeldung: "konnte keine Header-Dateien mehr anhaengen, weil...")..."
          "

          aus (ich hoffe, die Einstellung ist immer noch dort).
          Gibt's noch, hat die Laenge der Fehlermeldungen aber nicht veraendert.

          Das liegt daran, dass die Fehlerseite keine war, sondern es sich einfach um eine Fehlermeldung innerhalb einer "normalen" (Status 200) Scriptausgabe handelte. Zumindest wirst Du in Zukunft aber bei HTTP-Fehlern auch die zugehörige, im Gegensatz zur IE-Variante oft sogar aussagekräftige Meldung erhalten :-)

          Cheatah

          1. Hi,

            Das Problem ist ja, dass es mit anderen Clients - zumindest dem NS Browser - funktioniert,

            dann reagiert Dein Script auf die Daten, die der IE 6 mitsendet, anders als auf andere (oder zumindest dem NS). Versuche herauszufinden, wo die Unterschiede liegen könnten, indem Du beispielsweise alle verwendeten HTTP-übermittelten Daten protokollierst. Natürlich ist es ebenfalls wichtig herauszufinden, was genau nun eigentlich vor dem Header (also vor der Fehlermeldung) ausgegeben wurde.

            so dass ich dann den HTTP-Header von der in der php-Zieldatei erstellten HTML-Seite bekomme,

            Nicht unbedingt. Dein Client kann auch, wenn es z.B. ein CGI-Script ist, gleichzeitig Server sein: Der IE sendet einen Request an Dein Script, das Script nutzt die Header und leitet sie an Dein PHP-Script weiter. Die Rückgabe an den IE besteht dann aus Request-Headern, Response-Headern des PHP-Scripts und Response-Body, den Du sonst alleinig erhalten würdest.

            Aber den HTTP-Header wolltest du ja eh nicht.

            Ich wäre nicht böse gewesen, wenn Du ihn parat gehabt hättest ;-)

            Folgende URI wird aufgerufen:

            Die ist _sehr_ lang... vielleicht solltest Du versuchen, einen weniger umfangreichen Code zu erzeugen. Es ist bekannt, dass auch frühere IE-Versionen mit langen URLs Probleme hatten, die dann allerdings zumeist im Abschneiden des Rests bestanden.

            "...beim IE 6.0 kommt die Fehlermeldung, dass er die Seite nicht anzeigen (es ist !!! nicht !!! die uebliche redirect-Fehlermeldung: "konnte keine Header-Dateien mehr anhaengen, weil...")..."

            Sorry für mein Missverständnis, nur jetzt weiß ich leider überhaupt nicht mehr, welches System welchen Fehler meldet :-(

            Cheatah

            --
            X-Will-Answer-Email: No
            1. Ich werd mich mal an die Arbeit machen, und ueber die HTTP-Header versuchen, auf eine Loesung zu kommen. Und den uebergebenen String werde ich auch testweise kuerzen.
              Vielen Dank erst mal, werd dir eine kurze Nachricht zukommen lassen, wenn das Problem ist - wenn ist kausal zu verstehen :)

              Hi,

              Das Problem ist ja, dass es mit anderen Clients - zumindest dem NS Browser - funktioniert,

              dann reagiert Dein Script auf die Daten, die der IE 6 mitsendet, anders als auf andere (oder zumindest dem NS). Versuche herauszufinden, wo die Unterschiede liegen könnten, indem Du beispielsweise alle verwendeten HTTP-übermittelten Daten protokollierst. Natürlich ist es ebenfalls wichtig herauszufinden, was genau nun eigentlich vor dem Header (also vor der Fehlermeldung) ausgegeben wurde.

              so dass ich dann den HTTP-Header von der in der php-Zieldatei erstellten HTML-Seite bekomme,

              Nicht unbedingt. Dein Client kann auch, wenn es z.B. ein CGI-Script ist, gleichzeitig Server sein: Der IE sendet einen Request an Dein Script, das Script nutzt die Header und leitet sie an Dein PHP-Script weiter. Die Rückgabe an den IE besteht dann aus Request-Headern, Response-Headern des PHP-Scripts und Response-Body, den Du sonst alleinig erhalten würdest.

              Aber den HTTP-Header wolltest du ja eh nicht.

              Ich wäre nicht böse gewesen, wenn Du ihn parat gehabt hättest ;-)

              Folgende URI wird aufgerufen:

              Die ist _sehr_ lang... vielleicht solltest Du versuchen, einen weniger umfangreichen Code zu erzeugen. Es ist bekannt, dass auch frühere IE-Versionen mit langen URLs Probleme hatten, die dann allerdings zumeist im Abschneiden des Rests bestanden.

              "...beim IE 6.0 kommt die Fehlermeldung, dass er die Seite nicht anzeigen (es ist !!! nicht !!! die uebliche redirect-Fehlermeldung: "konnte keine Header-Dateien mehr anhaengen, weil...")..."

              Sorry für mein Missverständnis, nur jetzt weiß ich leider überhaupt nicht mehr, welches System welchen Fehler meldet :-(

              Cheatah

              1. Hi,

                Vielen Dank erst mal, werd dir eine kurze Nachricht zukommen lassen, wenn das Problem ist - wenn ist kausal zu verstehen :)

                bei dieser Satz scheint die Grammatik zwar stimmt so ganz nicht, aber versteht man ihn trotzdem ;-)

                Danke schon mal!

                Chea "Dieser Satz kein Verb." tah

                --
                X-Will-Answer-Email: No
                1. FYI:
                  Die URL war in der Tat zu lang.
                  2083 Characters duerfen es sein (http://support.microsoft.com/default.aspx?scid=KB;en-us;q208427) und ich hatte 2570...

                  Gruss,

                  Andreas.

                  Hi,

                  Vielen Dank erst mal, werd dir eine kurze Nachricht zukommen lassen, wenn das Problem ist - wenn ist kausal zu verstehen :)

                  bei dieser Satz scheint die Grammatik zwar stimmt so ganz nicht, aber versteht man ihn trotzdem ;-)

                  Danke schon mal!

                  Chea "Dieser Satz kein Verb." tah

                  1. Hi,

                    Die URL war in der Tat zu lang.

                    danke für die Info!

                    2083 Characters duerfen es sein

                    Dann viel Spaß beim Kürzen :-)

                    Cheatah

                    --
                    X-Will-Answer-Email: No