Jonas Hauenstein: Probleme mit MIME-Typen / Erkennung durch Browser

Hallo zusammen

Ich hoffe, ihr könnt mir weiterhelfen.

Meine Seite (http://www.ps2zone.ch) wird komplett mit Perl (cgi) dynamisch erzeugt. Das Ganze klappt auch hervorragend.

Leider hat sich aber bei mir ein User gemeldet, der mit Mozilla / Firebird unter Debian nicht die Seite, sondern nur den Quelltext als angezeigt bekommt.

Nach überprüfungen auf dem Server der Apache-Config kann es nicht daran liegen. Also muss das Problem innerhalb der Scripte zu finden sein.

Grundsätzlich gebe ich sämtlichen Text auf einmal mittels subroutine an den Borwser aus. Bis dahin bleibt der gesamte Queltext in einer (mehreren) Variablen gespeichert.

Die Subroutine sieht grundsätzlich folgerndermasen aus:

#####sub printhtml - html output#####
sub printhtml {
print "Content-type: text/html\n\n";

@_[0] =~ s/[searchurl]/$searchurl?zone=$zone/g;
@tmp = split(/[.:.]/,@_[0]);
foreach(@tmp) {
 print "$_\n";
}

exit;
}
#####end sub printhtml#####

Wie ihr seht, gebe ich vor jeglicher Ausgabe
"Content-type: text/html\n\n"
aus. Damit sollte ich doch eben dieses Problem verhindern, oder?

Ich bin echt etwas ratlos (eigentlich komplett ratlos :)) und um jede Hilfe dankbar!!

Schöne Grüsse

Jonas

  1. Hallo Jonas,

    print "Content-type: text/html\n\n";

    Hier solltest du

    print "Content-Type: text/html\015\012\015\012";

    benutzen. HTTP will CRLF, nicht LF.

    @_[0] =~ s/[searchurl]/$searchurl?zone=$zone/g;

    Autsch. Böser Anfänger-Fehler. Es heisst $_[0], nicht @_[0]. Siehe
    dazu auch perlfaq4: What is the difference between $array[1] and
    @array[1]?

    Zu deiner Frage kann ich ansonsten nicht viel sagen.

    Grüße,
     CK

    --
    Willst du die Freuden dieser Welt geniessen, so musst du auch ihr Leid erdulden.
    1. Hi

      Dank dir, aber was bewirkt 015\012\015\012 ?

      Und zu dem @_[0]: Das klappt hervorragend!

      1. Hallo Jonas,

        Dank dir, aber was bewirkt 015\012\015\012 ?

        \015\012 ist <CR><LF>. Also <Carrige Return><Line Feed>

        Und zu dem @_[0]: Das klappt hervorragend!

        Das es in dem Augenblick klappt heisst nicht, dass es richtig ist. Da du  ja offensichtlich nicht nachlesen willst, warum das nicht richtig ist, zwinge ich dich jetzt dazu:

        What is the difference between $array[1] and @array[1]?

        The former is a scalar value; the latter an array slice, making it
          a list with one (scalar) value.  You should use $ when you want a
          scalar value (most of the time) and @ when you want a list with
          one scalar value in it (very, very rarely; nearly never, in fact).

        Sometimes it doesn't make a difference, but sometimes it does.
          For example, compare:

        $good[0] = some program that outputs several lines;

        with

        @bad[0]  = same program that outputs several lines;

        The "use warnings" pragma and the -w flag will warn you about these
          matters.

        Grüße,
         CK

        --
        Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
        1. Hallo Christian

          Das ist wirklich nett, du musst mich aber nicht zwingen! Habs schon gelesen und entsprechend geändert. Es leuchtet auch ein! Aber eben klappte es auch mit @, weshalb ich es so belassen habe.

          Auf alle Fälle danke für die hilfe. Ich schau jetzt mal, ob es bei dem einen User nun klappt mit der Ausgabe. Sonst meld ich mich wieder ;)

          THX

          Jonas