Jonas Hauenstein: Perl generierte Page über Mozilla / Opera - nur Queltext!

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.

Wenn ich aber mit Mozilla / Opera drauf gehe, wird nur der Quelltext angezeigt!

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\015\012\015\012";

$_[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\015\012\015\012"

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. Sers,

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

    ich frage mich gerade, wieso du \015\012 verwendest und nicht einfach \n.
    Vielleicht liegt darin der Fehler, denn mein Mozilla erkennt deinen gesendeten Text laut "Info" als text/plain

    Gruß,
    Benne

    1. Halihallo Benne

      ich frage mich gerade, wieso du \015\012 verwendest und nicht einfach \n.

      Weil http://aktuell.de.selfhtml.org/artikel/cgiperl/zeilenumbruch/index.htm!

      Vielleicht liegt darin der Fehler, denn mein Mozilla erkennt deinen gesendeten Text laut "Info" als text/plain

      Tja, Perl-Source-Codes sind Textdateien :-)
      Das Problem ist, dass er nicht ausgeführt wird...

      Viele Grüsse

      Philipp

      1. Sers,

        http://aktuell.de.selfhtml.org/artikel/cgiperl/zeilenumbruch/index.htm!

        wieder was dazugelernt ;)

        Gruß,
        Benne

  2. tja,

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

    immer wieder gibts da Missverständnisse.

    Es muss heißen

    Content-type

    _kleines_ tee

    also
    Content-type: text/html\n\n

    \n\n ergibt eine Leerzeile.

    Erwin

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
    1. Halihallo Erwin

      print "Content-Type: text/html\015\012\015\012";
      immer wieder gibts da Missverständnisse.

      Es scheint so.

      Es muss heißen
      Content-type
      _kleines_ tee

      http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
      "Field names are case-insensitive"

      also
      Content-type: text/html\n\n
      \n\n ergibt eine Leerzeile.

      HTTP verwendet jedoch CRLF als Delimiter und CRLF ist (s. im anderen
      Posting verlinkter Feature Artikel von Roland) z.B. mit "\015\012" zu
      kodieren, aber sicher nicht mit "\n".

      Viele Grüsse

      Philipp

      1. Halihallo Erwin

        print "Content-Type: text/html\015\012\015\012";
        immer wieder gibts da Missverständnisse.

        Es scheint so.

        Es muss heißen
        Content-type
        _kleines_ tee

        http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
        "Field names are case-insensitive"

        Na ich nehme mal an Du kennst den Unterschied zwischen Theorie und Praxis ;-)

        Nimm einen Tipp vom Praktiker an: kleines "t"

        Gruss, Erwin

        also
        Content-type: text/html\n\n
        \n\n ergibt eine Leerzeile.

        HTTP verwendet jedoch CRLF als Delimiter und CRLF ist (s. im anderen
        Posting verlinkter Feature Artikel von Roland) z.B. mit "\015\012" zu
        kodieren, aber sicher nicht mit "\n".

        Viele Grüsse

        Philipp

        --
        SELFforum - Das Tor zur Welt!
        Theoretiker: Wie kommt das Kupfer in die Leitung?
        Praktiker: Wie kommt der Strom in die Leitung?
        1. Halihallo Erwin

          Na ich nehme mal an Du kennst den Unterschied zwischen Theorie und Praxis ;-)

          Ich hab's schon zu spüren bekommen, Danke für die unschöne
          Erinnerung daran :-)

          Nimm einen Tipp vom Praktiker an: kleines "t"

          Wenn ich denn mal an so einen Webserver stosse, der tatsächlich
          Probleme mit Standards hat, ja; dann bedanke ich mich schon jetzt
          für den Tipp.

          Frage an dich:
          Wenn es denn einen Webserver gibt, der nur 'Content-type' akzeptiert,
          ist es denn nicht genauso wahrscheinlich, dass es einen Webserver
          gibt, der _ausschliesslich_ 'Content-Type' akzeptiert?
          Könnte ja auch sein... Aber solange man glücklicher weise nicht mit
          derartigen Ignoranten arbeiten muss, ist Gross-/Kleinschreibung egal.
          Basta :-)

          Viele Grüsse

          Philipp

  3. Halihallo Jonas

    Wenn ich aber mit Mozilla / Opera drauf gehe, wird nur der Quelltext angezeigt!

    Von was? - Perl oder dem generierten HTML?

    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.

    Das ist zwar nicht allzu ratsam, da Speicheraufwändig und
    Zeitaufwenig (der User möchte schnell etwas sehen), aber möglich.

    #####sub printhtml - html output#####
    sub printhtml {
    print "Content-Type: text/html\015\012\015\012";

    Das ist OK.

    "Content-Type: text/html\015\012\015\012"
    aus. Damit sollte ich doch eben dieses Problem verhindern, oder?

    Starte das Script auf der Konsole. Was gibt es dann als erstes aus?
    Diese Zeile? - Eine Fehlermeldung? - Etwas ganz anderes?

    Viele Grüsse

    Philipp

    1. Halihallo Jonas

      Wenn ich aber mit Mozilla / Opera drauf gehe, wird nur der Quelltext angezeigt!

      Von was? - Perl oder dem generierten HTML?

      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.

      Das ist zwar nicht allzu ratsam, da Speicheraufwändig und
      Zeitaufwenig (der User möchte schnell etwas sehen), aber möglich.

      #####sub printhtml - html output#####
      sub printhtml {
      print "Content-Type: text/html\015\012\015\012";

      Das ist OK.

      Nene, das ist eben NICHT OK.

      statt Type notiere type

      kleines "t"

      Mancher Webserver aktzeptiert das große "T" nicht.

      Schönes Wochenende, Rolf

      "Content-Type: text/html\015\012\015\012"
      aus. Damit sollte ich doch eben dieses Problem verhindern, oder?

      Starte das Script auf der Konsole. Was gibt es dann als erstes aus?
      Diese Zeile? - Eine Fehlermeldung? - Etwas ganz anderes?

      Viele Grüsse

      Philipp

      --
      SELFforum - Das Tor zur Welt!
      Theoretiker: Wie kommt das Kupfer in die Leitung?
      Praktiker: Wie kommt der Strom in die Leitung?
      1. Hi Erwin,

        zitier doch bitte mal ein bisschen knapper...

        Viele Grüße
        Mathias Bigge

      2. Halihallo Erwin

        #####sub printhtml - html output#####
        sub printhtml {
        print "Content-Type: text/html\015\012\015\012";

        Das ist OK.

        Nene, das ist eben NICHT OK.

        Es IST OK. Nur dein Webserver scheint ein bisschen ballaballa zu
        sein :-)

        statt Type notiere type
        kleines "t"

        Ja, ja, ich habs verstanden. Akzeptiere es deswegen aber nicht mehr.

        Mancher Webserver aktzeptiert das große "T" nicht.

        Welcher? - Auf jedenfall hat er keinen Schimmer von Standards und
        ist demnach nicht zu empfehlen... (IIS? :-))

        Viele Grüsse

        Philipp