Über ein CGI-Skript erzeuge ich Grafiken, um diese in eine HTML-Seite einzubinden. Rufe ich das Skript jedoch über einen Browser auf, so schlägt dieser meistens(!?) vor, eine Datei „skriptname.png“ zu speichern, statt die PNG-Grafik anzuzeigen! Nur sporadisch und leider nicht reproduzierbar wird die Grafik (dann auch einwandfrei) vom Browser angezeigt.
Das Skript ist in Perl geschrieben und verwendet zur Rückgabe des Bildes das CGI-Modul von Perl. Als Content-Type (HTTP-Header) ist image/png angegeben. Das CGI-Skript wird von einem Apache 1.3 unter SuSE Linux 7.0 aufgerufen. Testen konnte ich das Verhalten mit dem Internet Explorer 5.0.
Hat irgendjemand eine Idee, was den Browser dazu bewegt, die Grafik speichern zu wollen statt sie anzuzeigen?
Hat irgendjemand eine Idee, was den Browser dazu bewegt, die
Grafik speichern zu wollen statt sie anzuzeigen?
abgesehen davon, daß der IE sich um korrekte Header kaum kümmert, leider nicht. Wenn Du mal die URL der Grafik nennst, kann ich vielleicht eine Analyse durchführen. Meine spontane Vermutung ist, daß Du entweder vor dem Header noch (aus Versehen) einen anderen ausgibst, oder danach etwas anderes (ein Newline zuviel oder so).
abgesehen davon, daß der IE sich um korrekte Header kaum
kümmert, leider nicht. Wenn Du mal die URL der Grafik nennst,
kann ich vielleicht eine Analyse durchführen. Meine spontane
Vermutung ist, daß Du entweder vor dem Header noch (aus
Versehen) einen anderen ausgibst, oder danach etwas anderes
(ein Newline zuviel oder so).
Leider kann ich Dir mit der Adresse nicht helfen, bzw. sie wird nichts nützen, da es sich um eine private IP aus einem Intranet handelt. Aus Sicherheitsgründen kann ich den Server leider nicht in Internet routen.
Ich habe den Header jetzt nicht greifbar, aber soweit ich mich erinnern kann, sah er folgendermaßen aus:
HTTP (irgendwas) 200 OK
Date: (aktuelles Datum)
Expires: (aktuelles Datum)
Content-Type: image/png
PNG…(hier folgt die PNG-Grafik)
Wobei die erste Header-Zeile offenbar vom Apache selbst generiert, ‚Date‘, ‚Expires‘, ‚Content-Type‘ hingegen vom CGI-Skript erzeugt wurden.
Mit Netscape konntest Du es nicht testen?
Nein, leider nicht. In dem betreffenden Netz ist ausschließlich der IE im Einsatz, der Linux-Rechner für den Webserver läuft nur im Textmodus.
Leider kann ich Dir mit der Adresse nicht helfen, bzw. sie
wird nichts nützen, da es sich um eine private IP aus einem
Intranet handelt. Aus Sicherheitsgründen kann ich den Server
leider nicht in Internet routen.
aber theoretisch könntest Du das Script auf einen Server im Intrnet legen, oder?
Ich habe den Header jetzt nicht greifbar, aber soweit ich mich
erinnern kann, sah er folgendermaßen aus:
Hm, der ist eigentlich in Ordnung, soweit ich das sehe. Blieben noch die Grafikdaten selbst… Erstellst Du die mit GD.pm?
Content-Type: image/png
Gerüchten (bzw. Einzelfällen) zufolge hat der IE Probleme mit dem großen „T“, obwohl es mehr als korrekt ist. Andererseits haben andere Clients kein Problem mit einem kleinen „t“ an der Stelle, weil es auch richtig ist. Probier’s mal aus - der IE hat eh seine Probleme mit Headern…
Mit Netscape konntest Du es nicht testen?
Nein, leider nicht. In dem betreffenden Netz ist
ausschließlich der IE im Einsatz, der Linux-Rechner für den
Webserver läuft nur im Textmodus.
Hast Du die Grafik mal abgespeichert und mit einem Grafikprogramm (oder auch anschließend mit dem IE) angesehen?
Wenn unsere Firewall mich via ssh, ftp oder sonstwas ins
„böse“ Internet lassen würde…
argh, das ist übel. Nicht mal FTP:80 über den Browser geht?
Habe gerade einmal ausprobiert, sie nach dem Speichern im IE
zu öffnen: Fehlanzeige! Er fordert wieder zum Speichern auf.
Da auf dem Filesystem keine Header abgespeichert werden, kann es eigentlich nur an den Grafikdaten selbst liegen - eventuell im Zusammenhang mit den Browsereinstellungen. Was schickt Dein IE denn als Accept-Header mit?
Blieben noch die Grafikdaten selbst… Erstellst Du die mit
GD.pm?
Ja, mit GD.pm Version 1.27
Leider ist diese Version wohl aus lizenzrechtlichen Gründen
nicht mehr in der Lage, GIFs zu erzeugen.
Korrekt - leider.
Hast Du einen Tip, wie man die Version zu kompatiblen PNGs
überreden kann?
Ich stehe leider etwas auf dem Schlauch, sorry. Du könntest es vielleicht mal mit einer älteren Version von GD.pm versuchen (falls Du eine findest…); aber insbesondere solltest Du es mit einem anderen Browser testen.