You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Graham Leggett <mi...@sharp.fm> on 2003/01/09 08:25:23 UTC
Proxy stripping Content-Length, Transfer-Encoding
Hi all,
In httpd v2.0 mod_proxy, both the Content-Length and Transfer-Encoding
headers are stripped from the backend server response before passing it
to the frontend:
/* We need to copy the output headers and treat them as input
* headers as well. BUT, we need to do this before we remove
* TE and C-L, so that they are preserved accordingly for
* ap_http_filter to know where to end.
*/
rp->headers_in = apr_table_copy(r->pool, r->headers_out);
/* In order for ap_set_keepalive to work properly, we can NOT
* have any length information stored in the output headers.
*/
apr_table_unset(r->headers_out,"Transfer-Encoding");
apr_table_unset(r->headers_out,"Content-Length");
After much discussion, the removal of the Content-Length was taken out
in httpd-2.1. Can anyone confirm this didn't break anything? If it
didn't I want to remove this in httpd v2.0 also.
What concerns me too is the removal of the transfer encoding - I assume
this is because it is a hop-by-hop header - my question is why are we
not removing all hop-by-hop headers, like we do for the initial request
from the browser?
/* We need to copy the output headers and treat them as input
* headers as well. BUT, we need to do this before we remove
* TE, so that they are preserved accordingly for
* ap_http_filter to know where to end.
*/
rp->headers_in = apr_table_copy(r->pool, r->headers_out);
apr_table_unset(r->headers_out,"Transfer-Encoding");
Regards,
Graham
--
-----------------------------------------
minfrin@sharp.fm "There's a moon
over Bourbon Street
tonight..."
Re: Proxy stripping Content-Length, Transfer-Encoding
Posted by Brian Pane <br...@cnet.com>.
On Wed, 2003-01-08 at 23:25, Graham Leggett wrote:
> Hi all,
>
> In httpd v2.0 mod_proxy, both the Content-Length and Transfer-Encoding
> headers are stripped from the backend server response before passing it
> to the frontend:
>
> /* We need to copy the output headers and treat them as input
> * headers as well. BUT, we need to do this before we remove
> * TE and C-L, so that they are preserved accordingly for
> * ap_http_filter to know where to end.
> */
> rp->headers_in = apr_table_copy(r->pool, r->headers_out);
>
> /* In order for ap_set_keepalive to work properly, we can NOT
> * have any length information stored in the output headers.
> */
> apr_table_unset(r->headers_out,"Transfer-Encoding");
> apr_table_unset(r->headers_out,"Content-Length");
>
> After much discussion, the removal of the Content-Length was taken out
> in httpd-2.1. Can anyone confirm this didn't break anything? If it
> didn't I want to remove this in httpd v2.0 also.
I haven't heard reports of anything breaking in 2.1
due to the change. I'll add an entry in the 2.0 STATUS
file to track votes on back-porting the change.
> What concerns me too is the removal of the transfer encoding - I assume
> this is because it is a hop-by-hop header - my question is why are we
> not removing all hop-by-hop headers, like we do for the initial request
> from the browser?
I think we should be removing all hop-by-hop headers here.
Brian