MitsuRonin: Firefox zeigt Quelltext statt der HTML-Seite

Hallo,

ich habe folgendes Problem:

In Java habe ich einen kleinen Webserver in unsere Server-Applikation integriert, damit man sich gewisse Statusinformationen anzeigen lassen kann.

Im Prinzip ist der Webserver wie ein normaler ServerSocket, der auf einem bestimmten Port auf Verbindungen wartet und dann die angeforderte Seite über den Output-Stream zurückschickt. Es gibt also keine "reale" HTML-Datei, die irgendwo liegt, der Quelltext wird dynamisch generiert.

Die Adresse, die ich im Browser eingebe, enthält somit auch kein .html, sondern ich rufe den Webserver mit IP und Port auf, also zum Beispiel http://localhost:3000

Im IE und im Chrome-Browser funktioniert die Seite tadellos, der Firefox zeigt stattdessen den Quelltext an, also:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
  <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />  
    <title>Visu Server PLC: Testprojekt</title>  
  </head>  
  <frameset cols='300,*' framespacing='0' frameborder='0' border='0'>  
    <frame src='menu.htm' marginheight=9 marginwidth=10>  
    <frameset rows='70,*' framespacing='0' frameborder='0' border='0'>  
      <frame src='title.htm' scrolling=no>  
      <frame src='home.htm' name='MAIN'>  
    </frameset>  
  </frameset>  
</html>

Und das dann alles in einer Zeile.

Hinweis: Auch die Dateien, die dort im Frameset aufgerufen werden (menu.htm, title.htm, home.htm) gibt es "real" nicht, auch diese werden dynamisch generiert und über den Socket gesendet.

Stimmt da irgendwas grundsätzlich am Format der Daten, die ich über den Socket jage, nicht? Der Firefox scheint den Datenstrom ja nicht als HTML-Seite zu interpretieren.

Ich würde mich freuen, wenn da jemand eine Idee hat, was ich mal ausprobieren könnte.

Danke und Gruß
Dennis

  1. Tach!

    In Java habe ich einen kleinen Webserver in unsere Server-Applikation integriert, damit man sich gewisse Statusinformationen anzeigen lassen kann. [...] Die Adresse, die ich im Browser eingebe, enthält somit auch kein .html, sondern ich rufe den Webserver mit IP und Port auf, also zum Beispiel http://localhost:3000

    Der Name der Ressource ist auch völlig uninteressant. Browser erkennen den Inhalt nur am Content-Type-HTTP-Header, der ein Pflichtelement ist. Nur Browser, die den Inhalt analysieren (was sie aber eigentlich gar nicht müssen/sollen) können falsch ausgewiesene Dokumente richtig anzeigen.

    Stimmt da irgendwas grundsätzlich am Format der Daten, die ich über den Socket jage, nicht? Der Firefox scheint den Datenstrom ja nicht als HTML-Seite zu interpretieren.

    Was für ein Content-Type wird ihm denn mitgeteilt?

    dedlfix.

    1. Tach!

      In Java habe ich einen kleinen Webserver in unsere Server-Applikation integriert, damit man sich gewisse Statusinformationen anzeigen lassen kann. [...] Die Adresse, die ich im Browser eingebe, enthält somit auch kein .html, sondern ich rufe den Webserver mit IP und Port auf, also zum Beispiel http://localhost:3000

      Der Name der Ressource ist auch völlig uninteressant. Browser erkennen den Inhalt nur am Content-Type-HTTP-Header, der ein Pflichtelement ist. Nur Browser, die den Inhalt analysieren (was sie aber eigentlich gar nicht müssen/sollen) können falsch ausgewiesene Dokumente richtig anzeigen.

      Stimmt da irgendwas grundsätzlich am Format der Daten, die ich über den Socket jage, nicht? Der Firefox scheint den Datenstrom ja nicht als HTML-Seite zu interpretieren.

      Was für ein Content-Type wird ihm denn mitgeteilt?

      dedlfix.

      Hi, der Dokumententyp ist:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

      Und innerhalb des <head>-Tags habe ich folgendes eingetragen:
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

      Liegt da das Problem?

      1. Hallo,

        Browser erkennen den Inhalt nur am Content-Type-HTTP-Header, der ein Pflichtelement ist.
        Was für ein Content-Type wird ihm denn mitgeteilt?
        Hi, der Dokumententyp ist:

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

        Und innerhalb des <head>-Tags habe ich folgendes eingetragen:
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

        danach hatte dedlfix nicht gefragt - das sind Informationen _innerhalb_ des Dokuments, die der Browser erst dann interpretiert, wenn er mal beschlossen hat, dass das HTML ist, was er da bekommt.
        Es ging ganz konkret um den HTTP-Header - nur der zählt (theoretisch).

        Ciao,
         Martin

        --
        They say hard work never killed anyone, but I figure, why take the risk?
          (Ronald Reagan, US-Präsident 1981-1989)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. danach hatte dedlfix nicht gefragt - das sind Informationen _innerhalb_ des Dokuments, die der Browser erst dann interpretiert, wenn er mal beschlossen hat, dass das HTML ist, was er da bekommt.
          Es ging ganz konkret um den HTTP-Header - nur der zählt (theoretisch).

          Ciao,
          Martin

          Ups, dann fehlt da bei mir wohl komplett noch etwas...denn der in meinem ersten Beitrag gepostet Quelltext ist alles, was ich über die Leitung jage, wenn ein Request für die Startseite kommt. Wie sieht denn der HTTP-Header normalerweise aus?

          1. Tach!

            Wie sieht denn der HTTP-Header normalerweise aus?

            Da gibt es eine ganze RFC dazu, beziehungsweise mehrere. Die einfachste Variante wäre:

            HTTP/1.0 200 OK
            Content-Type: text/html

            Plus eine Leerzeile. Dann kommt der Inhalt. Die Headerzeilen werden korrekt mit \r\n beendet.

            dedlfix.

            1. Tach!

              Wie sieht denn der HTTP-Header normalerweise aus?

              Da gibt es eine ganze RFC dazu, beziehungsweise mehrere. Die einfachste Variante wäre:

              HTTP/1.0 200 OK
              Content-Type: text/html

              Plus eine Leerzeile. Dann kommt der Inhalt. Die Headerzeilen werden korrekt mit \r\n beendet.

              dedlfix.

              PERFEKT, vielen Dank! Hatte mir grad Zeilen aus dem Beispielantword-Header hier
              http://msdn.microsoft.com/de-de/library/aa287673(v=vs.71).aspx
              rausgesucht und nur die Zeilen HTTP OK, Content-Type und Content-Length genutzt und schon gehts auch mit dem Firefox!

              Kaum macht man es richtig.....

              Nochmal vielen Dank für Eure Hilfe!

              1. PERFEKT, vielen Dank!

                Noch nicht ganz...

                rausgesucht und nur die Zeilen HTTP OK, Content-Type und Content-Length genutzt und schon gehts auch mit dem Firefox!

                Nur zufällig!

                Mit

                Content-Type: text/html; charset=UTF-8
                oder
                Content-Type: text/html; charset=ISO-8859-15

                fährst Du wohl besser, weil Du dem Browser dann auch noch die Kodierung der Zeichen mitteilst.

                Nochmal vielen Dank für Eure Hilfe!

                Bitte.

                Jörg Reinholz