Firefox und XHTML

  • Hallo,
    wir haben ein größeres Problem mit Firefox wenn er Seiten mit Content-Type "application/xhtml+xml" darstellen soll.
    Die gleiche Seite mit Content-Type text/html funktioniert tadellos.
    Siehe dazu auch hier:http://jira.jboss.com/jira/browse/RF-2846

    Wir haben eine Webanwendung auf Basis der Java Server Faces laufen. Als Implementierung wird die RI von Sun verwendet.
    Opera und IE erhalten die Seiten als text/html und stellen das wunderbar dar. Der Firefox würde das auch, doch leider erhält er die Seiten als application/xhtml+xml und diese stellt er nicht sauber dar:-(

    Gibt es irgendeine Einstellung die dem Firefox sagt, das er kein XHTML verlangen soll?

    Die andere Richtung geht leider nicht, oder sagen wir besser ich hab es nach langen Versuchen nicht herausgefunden.
    (Wenn wir statt der SUN RI die Implementierung von Apache Myfaces verwenden könnten, wären wir aus dem Schneider. Diese sendet auch an den Firefox text/html. Doch leider lässt sie sich aus anderen Gründen bei uns nicht einsetzen)

    Das Sun RI fragt den Browser ab, und endscheidet dann welcher Content Type zu setzen ist.
    Wenn da irgendwer eine hilfreiche Idee hätte, wären wir wirklich Dankbar.
    Ciao,
    Carsten

  • Das ist zwar richtig, doch kann der Server sicherlich anhand der Capabilitys des Browsers entscheiden was er ausliefert.
    Und das tut er. Zumindest das Servlet das für JSF RI zuständig ist.
    Schließlich erhalten Opera und IE7 text/html und der Firefox application/xhtml+xml. Und das vom gleichen Server.

  • Simon, Firefox sendet als Accept-Header standardmäßig "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    " bzw. in Firefox 3 zukünftig "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8". Das reicht diesem Server wohl aus, um XHTML (korrekt) als XHTML zu senden.

    Man kann einen einzelnes Firefox-Profil mithilfe der about:config-Einstellung network.http.accept.default dazu überreden, einen anderen Header zu senden, aber ich nehme an, dass es um kein Intranet geht und diese Lösung daher ausfällt.

  • Ich kenne mich mit diesem Serversystem überhaupt nicht aus, aber kann man den Server nicht so konfigurieren, dass er die Inhalte immer und nur als text/html sendet, unabhängig vom Accept-Header? Diese Lösung ist nicht ganz sauber, denn der korrekte MIME-Typ ist eigentlich tatsächlich application/xhtml+xml und nichts anderes. Trotzdem akzeptiert der Firefox XHTML-Dokumente, die vom Server als text/html geliefert werden, klaglos.

    Ein Problem kann sich nur umgekehrt ergeben: Wenn das Dokument ohne Browserprüfung nur als application/xhtml+xml ausgeliefert wird, dann akzeptieren es IE-Versionen vor 7 nicht als XHTML-Dokument, sondern bieten die Datei zum Datei zum Download an. Mit ausschließlich text/html bist du aber auf der sicheren Seite.

    Die Lösung, dass jeder potentielle Nutzer seine Accept-Einstellungen ändern muss, ist natürlich nicht praktikabel. Das Problem liegt aber trotzdem auf Serverseite und nicht beim Firefox! Der Server wertet den Accept-Header aus und entscheidet dann, dass er als application/xhtml+xml ausliefert. Er wäre nicht verpflichtet, dies zu tun, denn Firefox hat mitgeteilt, dass er auch text/html annimmt. Wenn der Server den Accpet-Header auswertet, dann muss er die Ressource aber gegebenenfalls auch im entsprechenden Format bereithalten. Offensichtlich wird aber nicht nur ein anderer Content-Type gesendet, sondern der Server versucht auch, tatsächlich eine andere, nicht vorhandene Ressource auszuliefern. Diese ist nicht vorhanden und so kommt es zu besagter Fehlermeldung.

  • Danke für die Antworten.
    Ich werde das mit dem network.http.accept.default mal ausprobieren.

    Vielleicht doch noch eine Frage in diesem Kontext. Ist es korrekt, das Firefox mit Minimal Bounding Rectangles (MBR) rendert?
    Als Beispiel dient da der Link in der Ausgangsfrage. Die Hintergrundfarbe ist in der Stilklasse des body-tags festgelegt. Und Firefox färbt nicht das ganze Fenster ein, sonder leider nur die MBR Fläche. Das führt auf anderen Seiten dazu das das Layout komplett unterschiedlich ist, jenacdem ob xhtml oder html:-(

    Bin schon gespannt, was firefox 3 dann da so macht.

    Ansonsten hab ich mich wohl missverständlich ausgedrückt in meiner Anfrage. Hier der Auszug

    Zitat

    Gibt es irgendeine Einstellung die dem Firefox sagt, das er kein XHTML verlangen soll?

    Die andere Richtung geht leider nicht, oder sagen wir besser ich hab es nach langen Versuchen nicht herausgefunden.


    Das sollte heissen, das ich bisher nicht herausgefunden habe wie man das Sun FSF RI überedet generell text/html zu senden.

  • Mit der Änderung an network.http.accept.default bin ich zum Ziel gekommen.
    Icjh kann jetzt alle Browser vergleichen (inkl. Firefox xhtml und html)
    Vielen Dank. Das hat mir weitergeholfen.