[PATCH 1 of 2] HTTP: add support for trailers in HTTP responses

Maxim Dounin mdounin at mdounin.ru
Thu Jul 7 23:20:29 UTC 2016


Hello!

On Thu, Jul 07, 2016 at 01:08:46PM -0700, Piotr Sikora wrote:

[...]

> Furthermore, like you previously noted, official gRPC clients & server
> are using HTTP/2, so there is absolutely no Google-agenda in pushing
> HTTP/1.1 trailers, other than me wanting to add proper support for
> trailers.

So the question remains: are there any real-world use cases?  May 
be someone will be able to provide some.

Without real-world use cases I don't think this should be added, 
as in general trailers is quite external concept to how nginx 
works and also may have various security implications.

> > Your patch forces use of chunked transfer encoding, and that's the
> > point where I disagree.
> 
> OK, that wasn't clear before.
> 
> > The "TE: trailers" request header means
> > that client is able to understand trailers, but it doesn't mean
> > that chunked encoding must be used even if content length is
> > known.  Using chunked transfer encoding instead of Content-Length
> > may or may not be justified by trailers, and this depends on a
> > particular use case.
> 
> Well, I think that if someone decides to add trailers in nginx.conf
> (either via "add_trailer" or "proxy_pass_trailers" in the future),
> then forcing chunked encoding and emitting those trailers is much
> closer to the intent of the person that configured NGINX than silently
> dropping them.
> 
> If that's a blocker for you, then I can change this behavior, but I
> think that most people would be quite surprised by explicitly
> configured trailers that are silently dropped from the response.

Silently dropping trailers is what anyway happens if the client 
doesn't support chunked encoding at all (e.g., uses HTTP/1.0).  
And this is also what happens in your patch if there is no "TE: 
trailers".

I think that whether to drop Content-Length and switch to chunked 
encoding is highly use-case specific question.  In some cases it 
may be appropriate, in some cases not, and in some cases one may 
want to add trailers even without "TE: trailers".  So forcing 
chunked encoding probably should be configured separately.  On the 
other hand, it's very hard to decide something given there are no 
real use cases known.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx-devel mailing list