On Fri, Jun 3, 2016 at 4:04 PM, Simon Mott <[email protected]> wrote:
> (I don't really understand what AP_FTYPE_CONTENT_SET-2 means in the source
> for mod_expires)
I am not sure the docs capture this, but you cannot really choose an
arbitrary order with SetOutputFilter, although you can with mod_filter
(native mod_filter directives and AddOutputFilterByType -- but by-type
won't work for you because you have the issue with needing the type
set before the handler)
The reason is because each filter has a predefined type (or rank)
where it wants to run and the order in SetOutputFilter doesn't
override it, but mod_filter does indirectly override it.
Here are the values:
typedef enum {
/** These filters are used to alter the content that is passed through
* them. Examples are SSI or PHP. */
AP_FTYPE_RESOURCE = 10,
/** These filters are used to alter the content as a whole, but after all
* AP_FTYPE_RESOURCE filters are executed. These filters should not
* change the content-type. An example is deflate. */
AP_FTYPE_CONTENT_SET = 20,
/** These filters are used to handle the protocol between server and
* client. Examples are HTTP and POP. */
AP_FTYPE_PROTOCOL = 30,
/** These filters implement transport encodings (e.g., chunking). */
AP_FTYPE_TRANSCODE = 40,
/** These filters will alter the content, but in ways that are
* more strongly associated with the connection. Examples are
* splitting an HTTP connection into multiple requests and
* buffering HTTP responses across multiple requests.
*
* It is important to note that these types of filters are not
* allowed in a sub-request. A sub-request's output can certainly
* be filtered by ::AP_FTYPE_RESOURCE filters, but all of the "final
* processing" is determined by the main request. */
AP_FTYPE_CONNECTION = 50,
/** These filters don't alter the content. They are responsible for
* sending/receiving data to/from the client. */
AP_FTYPE_NETWORK = 60
} ap_filter_type;
Filters declaring lower numbers run earlier (output from a handler
like mod_proxy/mod_cgi ->mod_include -> mod_deflate -> http filters ->
mod_ssl -> core output filter)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]