Index: docs/manual/mod/mod_include.xml =================================================================== --- docs/manual/mod/mod_include.xml (revision 106274) +++ docs/manual/mod/mod_include.xml (working copy) @@ -310,6 +310,8 @@ parsed file has Options IncludesNOEXEC set, then only documents with a text MIME type (text/plain, text/html + etc.) or an application/foo+xml MIME type + (application/xhtml+xml, application/rdf+xml etc.) will be included. Otherwise CGI scripts are invoked as normal using the complete URL given in the command, including any query string.

Index: modules/filters/mod_include.c =================================================================== --- modules/filters/mod_include.c (revision 106274) +++ modules/filters/mod_include.c (working copy) @@ -1674,10 +1674,25 @@ } if (!error_fmt && (ctx->flags & SSI_FLAG_NO_EXEC) && - rr->content_type && strncmp(rr->content_type, "text/", 5)) { + rr->content_type) { + int decline = 1; + if (!strncmp(rr->content_type, "text/", 5)) { + decline = 0; + } else if (!strncmp(rr->content_type, "application/", 12)) { + const char * pos = ap_strchr_c(rr->content_type, ';'); + if (!pos) { + pos = rr->content_type + strlen(rr->content_type); + } + pos -= 4; + if (!strncmp(pos, "+xml", 4)) { + decline = 0; + } + } - error_fmt = "unable to include potential exec \"%s\" in parsed " - "file %s"; + if (decline) { + error_fmt = "unable to include potential exec \"%s\" in parsed " + "file %s"; + } } /* See the Kludge in includes_filter for why.