https://bz.apache.org/bugzilla/show_bug.cgi?id=58231
--- Comment #18 from Luca Toscano <[email protected]> --- Another solution that I played with (just a hack, nothing complete) is the following: Index: modules/http/http_request.c =================================================================== --- modules/http/http_request.c (revision 1810323) +++ modules/http/http_request.c (working copy) @@ -523,6 +523,8 @@ request_rec *r) { int access_status; request_rec *new; + const char *header_to_copy = NULL; + const char *header_values_to_copy = NULL; if (ap_is_recursion_limit_exceeded(r)) { ap_die(HTTP_INTERNAL_SERVER_ERROR, r); @@ -586,6 +588,13 @@ if (location) apr_table_setn(new->headers_out, "Location", location); } + + if ((header_to_copy = apr_table_get(r->subprocess_env, "keep-response-header"))) { + if((header_values_to_copy = apr_table_get(r->headers_out, header_to_copy))) { + apr_table_setn(new->headers_out, header_to_copy, header_values_to_copy); + } + } + new->err_headers_out = r->err_headers_out; new->trailers_out = apr_table_make(r->pool, 5); new->subprocess_env = rename_original_env(r->pool, r->subprocess_env); Index: modules/mappers/mod_rewrite.c =================================================================== --- modules/mappers/mod_rewrite.c (revision 1810323) +++ modules/mappers/mod_rewrite.c (working copy) @@ -5285,6 +5285,8 @@ return DECLINED; } + apr_table_setn(r->subprocess_env, "keep-response-header", "Vary"); + /* now do the internal redirect */ ap_internal_redirect(apr_pstrcat(r->pool, r->filename+9, r->args ? "?" : NULL, r->args, NULL), r); This allows to selectively merge some headers from r->headers_out to the new request, without: 1) impacting existing code using the ap_internal_redirect since only mod_rewrite would use it. 2) force error responses after ap_internal_redirect to carry those headers (like the vary ones). Not sure if it makes any sense, but I am running out of ideas :) -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
