Grüssi,
Das Script fügt seine Ausgabe doch mitten im HTML ein, dort wo das <!-- ssi goes here --> steht. Da ist der Header doch schon längst vom Apache -so wie bei statischen Dokumenten auch- ausgegeben worden.
Nein! Was passiert wenn ein Client eine Seite anfordert? Der Apache bekommt den Request, schielt mal kurz auf die Dateiendung, sieht html, und weiss, aha, das hat den Content-type: text/html! Also schmeisst er diese neugewonnene Erkenntnis gleich mal in den Response-Header. Dann macht er sich an die anderen Header, und dann, ganz am Schluss gibt der den Inhalt der angeforderten Seite im Body der Response mit!
Wenn nun ein shtml Dokument angefordert wird sieht der alte Indianer an der Dateiendung, dass er dieses Dokument erst parsen muss, da Inhalte der Seite erst noch (von ihm oder scripts) generiert werden müssen. Dies macht er dann. Das script selbst muss dem Server nun bekanntgeben welches Format der Output des Scripts hat, das kann der Server ja nicht riechen und dieser Content-type dient dem Apache dann dazu, den Content-type der Response zu generieren. Wenn dann das script abgearbeitet ist, und die Seite komplett ist, dann (und da sind die Header schon alle fertig) wird wieder die Seite in den Response-Body eingefügt und abgeschickt!
Ehrlich gesagt bin ich mir aber nicht sicher was passiert wenn ein script in einer shtml-Seite 2 verschiedene Content-types ausgibt. Solange die scripts immer denselben Content-type ausgeben ist ja alles paletti, aber was wenn z.b. text/plain und text/html ausgegeben wird, oder viel schlimmer, einmal text/html und einmal audio/midi oder sowas? Was macht der Server dann? Nimmt er das erste und ignoriert er die zweite? Nimmt er dann den DefaultType? Hängt er sich auf?
Generell: was passiert, wenn mehrere Content-types ausgegeben werden?
lg bernhard