- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Tue, 22 Jul 97 18:23:47 MDT
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
[OOPS. My previous message was missing one very important sentence, regarding when "identity" content-codings are implicitly allowed. -Jeff] Reference: http://www.w3.org/pub/WWW/Protocols/HTTP/Issues/#CONTENT-ENCODING This is a rewrite of Henrik's proposed solution, from http://www.ics.uci.edu/pub/ietf/http/hypermail/1997q3/0038.html I have tried to make it somewhat more precise (especially about what it means for a response to be "acceptable" according to the Accept-Encoding header). Also, Henrik has already pointed out that Content-Encoding is legal on requests, not just on responses, and so we need to specify what happens in certain corner cases there, as well. -Jeff (1) in section 3.5 (Content Codings), add this after the item for "deflate" identity The default (identity) encoding; the use of no transformation whatsoever. This content-coding is used only in the Accept-encoding header, and SHOULD NOT be used in Content-coding header. (2) Replace section 14.3 (Accept-Encoding) entirely with 14.3 Accept-Encoding The Accept-Encoding request-header field restricts the set of content-codings (defined in section 3.5) that are acceptable for the response. Accept-Encoding = "Accept-Encoding" ":" 1#( codings [ ";" "q" "=" qvalue ] ) codings = ( content-codings | "*" ) Examples of its use are: Accept-Encoding: compress, gzip Accept-Encoding: Accept-Encoding: * Accept-Encoding: compress;q=0.5, gzip;q=1.0 Accept-Encoding: gzip=1.0; identity=0.5; *;q=0 A server tests whether a content-coding is acceptable, according to an Accept-Encoding field, using these rules: (1) If the content-coding is one of the content-codings listed in the Accept-Encoding field, then it is acceptable. (Note that, as defined in section 3.9, a qvalue of 0 means "not acceptable".) (2) The special "*" symbol in an Accept-Encoding field matches any available content-coding. (3) If multiple content-codings are acceptable, then the acceptable content-coding with the highest non-zero qvalue is preferred. (4) The "identity" content-coding is always acceptable, unless specifically refused because the Accept-Encoding field includes "identity;q=0", or because the field includes "*;q=0" and does not explictly include the "identity" content-coding. If the Accept-Encoding field-value is empty, then only the "identity" encoding is acceptable. If an Accept-Encoding field is present in a request, and if the server cannot send a response which is acceptable according to the Accept-Encoding header, then the server SHOULD send an error response with the 406 (Not Acceptable) status code. If no Accept-Encoding field is present in a request, the server MAY assume that the client will accept any content coding. In this case, if "identity" is one of the available content-codings, then the server SHOULD use the "identity" content-coding. Note: If the request does not include an Accept-Encoding field, and if the "identity" content-coding is unavailable, then preference should be given to content-codings commonly understood by HTTP/1.0 clients (i.e., "gzip" and "compress"); some older clients improperly display messages sent with other content-encodings. The server may also make this decision based on information about the particular user-agent or client. (3) In section 14.12 (Content-Encoding), replace The Content-Encoding is a characteristic of the entity identified by the Request-URI. Typically, the entity-body is stored with this encoding and is only decoded before rendering or analogous usage. with The content-coding is a characteristic of the entity identified by the Request-URI. Typically, the entity-body is stored with this encoding and is only decoded before rendering or analogous usage. However, a proxy MAY modify the content-coding if the new coding is known to be acceptable to the recipient, unless the "no-transform" Cache-control directive is present in the message. If the content-coding of an entity is not "identity", then the response MUST including a Content-Encoding entity-header (section 14.12) that lists the non-identity content-coding(s) used. If the content-coding of an entity in a request message is not acceptable to the origin server, the server SHOULD respond with a status code of 415 (Unsupported Media Type). (4) In section 14.9 (Cache-Control), add | "no-transform" to the BNF for cache-request-directive. (5) In section 14.9.5 (No-Transform Directive), replace Therefore, if a response includes the no-transform directive, an intermediate cache or proxy MUST NOT change those headers that are listed in section 13.5.2 as being subject to the no-transform directive. This implies that the cache or proxy must not change any aspect of the entity-body that is specified by these headers. with Therefore, if a message includes the no-transform directive, an intermediate cache or proxy MUST NOT change those headers that are listed in section 13.5.2 as being subject to the no-transform directive. This implies that the cache or proxy must not change any aspect of the entity-body that is specified by these headers. [End of proposed changes]
Received on Tuesday, 22 July 1997 18:31:50 UTC