On Wed 17 Dec 2008, cr...@animalhead.com wrote: > My mod_perl2 scripts mostly fall into 2 categories: > > 1) scripts that are called by URL location, and generate complete > content-pages > 2) scripts that are called by SSI "include virtual" sequences > in .html files, and generate part of a page > > In some cases scripts of type 1 directly call scripts of type 2 to > generate parts of their pages. > (Call this "case 3"). > > My questions are about when to call $r->content_type('text/html') > > Such a call is a good idea in category 1, right?
Each request has a content-type assigned no matter if you set it in your script or not. Normally (for static files), that header if figured out by one of the mime-modules (mod_mime, mod_mime_magic) in the type-checker-phase of the request cycle. But usually it's a good idea to set/reset it in your content handler prior to sending any data to the client because that handler knows better what it is going to send. > Such a call probably should not be made by the directly-called script > in case 3, right? > Apache probably can't even tell that a new script has gotten into the > act, the calling > and called script are both in the undifferentiated sea of mod-perl > code, right? > > In an SSI-invoked script (category 2) is a content_type call a) > required, b) good practice, > or c) a bad idea? In all cases it is good practice. Virtual include uses subrequests. That means when the INCLUDE filter sees a vinclude it stops the output of the current request, creates a subrequest for the wanted document, runs that document sending the output to the client but ignoring all headers save the status. When the subrequest is done the output of the main request is resumed. So, in your cases 2 and 3 the Content-Type header is ignored. The client sees only the content-type of the main request. If your included script wants to know the content-type of the main request it can use $r->main->content_type (perhaps to adopt the character set). Torsten -- Need professional mod_perl support? Just hire me: torsten.foert...@gmx.net