Wolfgang Wiese: CGI-Ausgabe mit Stylesheet

Hi,

ich hab da ein kleines Problemchen mit CGI und Stylesheets, was mich doch wundert..

Ich habe ein Formular welches ich ganz normal und erfolgreich bearbeite. Dann geb ich als Return eine
Webseite aus, die auch Stylesheets enthalten soll.
Ich mach dies normalerweise einfach mit

<link rel=stylesheet type="text/css" href="#BASE_URL#wcms.css">

wobei #BASE_URL# durch die URL zum richtigen Pfad ersetzt wird.
ALs Ersatz kann ich auch folgendes setzen:

<style type="text/css">
  <!--
   @import url(#BASE_URL#wcms.css);
  //-->
  </style>
  
Soweit so gut.
Nur: Wenn ich das Programm dann ausfuehre wird alles ordentlich gemacht, doch anstelle den Stylesheet nur einzubinden, bleibt der Browser auf der Seite und zeigt mir den Inhalt des geladenen Stylesheets aus und nicht die eigentlich generierte Seite.

Ob ich in meiner Angabe oben <base> einbaue oder nicht, macht da keinen Unterschied.

Hat da jemand einen Tip(p) ?

Meine Vermutung liegt darin, dass der Browser durch die Endung taueschen laesst, d.h. er erkennt, das mein Ursprungsdokument in diesem fall die Endung ".pl" (oder ".cgi" traegt und ist deswegen verwirrt...?

Ciao,
Wolfgang

  1. Nur: Wenn ich das Programm dann ausfuehre wird alles ordentlich gemacht, doch anstelle den Stylesheet nur einzubinden, bleibt der Browser auf der Seite und zeigt mir den Inhalt des geladenen Stylesheets aus und nicht die eigentlich generierte Seite.

    Wer ist der Browser? Netscape Navigator 4 nehme ich mal an. Dann nehme ich im weiteren an, dass du nicht den richtigen Mime-Type im script ausgibst, sondern irgendeinen text/*, daher solltest du als erstes 'Content-Type: text/css; charset=iso-8859-1' ausgeben.

    Meine Vermutung liegt darin, dass der Browser durch die Endung taueschen laesst, d.h. er erkennt, das mein Ursprungsdokument in diesem fall die Endung ".pl" (oder ".cgi" traegt und ist deswegen verwirrt...?

    Darf nicht sein, dieses Verhalten ist per HTTP/1.1 explizit verboten.

    1. Hi,

      Wer ist der Browser? Netscape Navigator 4 nehme ich mal an. Dann nehme ich im weiteren an, dass du nicht den richtigen Mime-Type im script ausgibst, sondern irgendeinen text/*, daher solltest du als erstes 'Content-Type: text/css; charset=iso-8859-1' ausgeben.

      Warum sollte ich das tun?

      Mein Ziel ist ja nicht die CSS-Datei direkt einzubinden via
      CGI-Skript, sondern eine bestehende HTML-Datei, in der sich zu ersetzenbde Variablen befinden,
      neu auszugeben, wobei in dieser HTML-Datei nun die <link ref=stylesheet...> -Angabe
      enthalten ist.

      Ciao,
      Wolfgang

      1. Wer ist der Browser? Netscape Navigator 4 nehme ich mal an. Dann nehme ich im weiteren an, dass du nicht den richtigen Mime-Type im script ausgibst, sondern irgendeinen text/*, daher solltest du als erstes 'Content-Type: text/css; charset=iso-8859-1' ausgeben.

        Warum sollte ich das tun?

        Hm, dann ist der Mime-Type für CSS Dateien falsch.

        Mein Ziel ist ja nicht die CSS-Datei direkt einzubinden via
        CGI-Skript, sondern eine bestehende HTML-Datei, in der sich zu ersetzenbde Variablen befinden,

        Die Datei ist damit ja nicht bestehend sondern erst zu generieren, aber egal...

        neu auszugeben, wobei in dieser HTML-Datei nun die <link ref=stylesheet...> -Angabe
        enthalten ist.

        Und dieses StyleSheet wird angezeigt, statt das HTML Dokument zu rendern. Das ist ein typisches Verhalten von NN4 bei allen derartigen externen Dokumenten. Du gibst nicht annährend ausreichend Informationen um das weiter zu analysieren.

        1. Hi,

          Und dieses StyleSheet wird angezeigt, statt das HTML Dokument zu rendern. Das ist ein typisches Verhalten von NN4 bei allen derartigen externen Dokumenten. Du gibst nicht annährend ausreichend Informationen um das weiter zu analysieren.

          Und du stocherst gut im Dunklem ;)

          Egal, es hat mit trotzdem geholfen, und darauf kommt es ja an.

          Die Loesung war seltsamerweise folgende:

          In einer normalen HTML-Datei hatte ich folgendes stehen,
          was auch vom Netscape richtig dargestellt wurde:

          ----
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

          <html>
          <head>
              <title>WCMS Startseite</title>
          [...]
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              <link rel="stylesheet" type="text/css" href="wcms.css">  
          </head>

          <body>
          [...]
          ----

          Bei der CGI-Ausgabe musste ich aber die Zeile <meta http-equiv>
          loeschen, damit derselbe Code dargestellt wird.
          Ich seh da zwar nicht so die Logik, aber nun gut.

          Ciao,
            Wolfgang

          P.S.: Natuerlich arbeite ich unter NN - ich schrieb doch das es um ein CGI geht.
          Logische Folge:
          CGI => nur sicher/effizient auf Unix/Linux => Netscape :)
          Ok, der letzte Folgeschluss ist nicht unbedingt richtig, da
          es bereits IE4 fuer Unix gibt, aber dann kann ich auch gleich mein
          Login/PWD auf sowas wie Hackcity.de posten.