- From: Mark Nottingham <mnot@mnot.net>
- Date: Fri, 31 Jan 2014 13:25:50 +1100
- To: Roy Fielding <fielding@gbiv.com>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>, Richard Barnes <rlb@ipv.sx>
LGTM. Anyone have a problem with this? On 25 Jan 2014, at 9:32 am, Roy T. Fielding <fielding@gbiv.com> wrote: > In response to a Richard Barnes (IESG) comment on p1: > > http://trac.tools.ietf.org/wg/httpbis/trac/ticket/551 > > I have made some changes to the requirements around sending and > processing received trailer fields. A complete diff is at > > http://trac.tools.ietf.org/wg/httpbis/trac/changeset/2580 > > but the important design bits are in p1 4.1.2 (Chunked Trailer Part): > > OLD: > A sender MUST NOT generate a trailer that contains a field which > needs to be known by the recipient before it can begin processing the > message body. For example, most recipients need to know the values > of Content-Encoding and Content-Type in order to select a content > handler, so placing those fields in a trailer would force the > recipient to buffer the entire body before it could begin, greatly > increasing user-perceived latency and defeating one of the main > advantages of using chunked to send data streams of unknown length. > A sender MUST NOT generate a trailer containing a Transfer-Encoding, > Content-Length, or Trailer field. > > A server MUST generate an empty trailer with the chunked transfer > coding unless at least one of the following is true: > > 1. the request included a TE header field that indicates "trailers" > is acceptable in the transfer coding of the response, as > described in Section 4.3; or, > > 2. the trailer fields consist entirely of optional metadata and the > recipient could use the message (in a manner acceptable to the > generating server) without receiving that metadata. In other > words, the generating server is willing to accept the possibility > that the trailer fields might be silently discarded along the > path to the client. > > The above requirement prevents the need for an infinite buffer when a > message is being received by an HTTP/1.1 (or later) proxy and > forwarded to an HTTP/1.0 recipient. > > NEW: > A sender MUST NOT generate a trailer that contains a field necessary > for message framing (e.g., Transfer-Encoding and Content-Length), > routing (e.g., Host), request modifiers (e.g., controls and > conditionals in Section 5 of [Part2]), authentication (e.g., see > [Part7] and [RFC6265]), response control data (e.g., see Section 7.1 > of [Part2]), or determining how to process the payload (e.g., > Content-Encoding, Content-Type, Content-Range, and Trailer). > > When a chunked message containing a non-empty trailer is received, > the recipient MAY process the fields (aside from those forbidden > above) as if they were appended to the message's header section. A > recipient MUST ignore (or consider as an error) any fields that are > forbidden to be sent in a trailer, since processing them as if they > were present in the header section might bypass external security > filters. > > Unless the request includes a TE header field indicating "trailers" > is acceptable, as described in Section 4.3, a server SHOULD NOT > generate trailer fields that it believes are necessary for the user > agent to receive. Without a TE containing "trailers", the server > ought to assume that the trailer fields might be silently discarded > along the path to the user agent. This requirement allows > intermediaries to forward a de-chunked message to an HTTP/1.0 > recipient without buffering the entire response. > > > and in the pseudo-code of 4.1.3 (Decoding Chunked): > > OLD: > read header-field > while (header-field not empty) { > append header-field to existing header fields > read header-field > } > > NEW: > read trailer field > while (trailer field is not empty) { > if trailer field is allowed to be sent in a trailer, > append trailer field to existing header fields > read trailer-field > } > > > Please let us know if there are any problems with these changes. > > > Cheers, > > Roy T. Fielding <http://roy.gbiv.com/> > Senior Principal Scientist, Adobe <https://www.adobe.com/> > > -- Mark Nottingham http://www.mnot.net/
Received on Friday, 31 January 2014 02:26:20 UTC