- From: Charles Fry <fry@google.com>
- Date: Thu, 3 Apr 2008 20:34:39 -0400
- To: "Mark Nottingham" <mnot@yahoo-inc.com>
- Cc: "Julian Reschke" <julian.reschke@gmx.de>, "HTTP Working Group" <ietf-http-wg@w3.org>, google-gears-eng@googlegroups.com
> See: > http://coad.measurement-factory.com/ > > A representative test is sending a request with > Expect: 100-continueing And you define correct proxy behavior as sending a 417 when such a header is encountered? In other words your previous response suggests that most proxies _do not_ send a 417, but simply pass the header through, except for very recent Squid builds which send a 417 on an unknown expectation? > I don't see how you can read it both ways; e.g., > > > > This header field is defined with extensible syntax to allow for > > future extensions. If a server receives a request containing an > > Expect field that includes an expectation-extension that it does not > > support, it MUST respond with a 417 (Expectation Failed) status. I read this as applying to a non-proxy server. In other words, the final server for a given request. Obviously this server knows which expectation-extensions it supports, and clearly it must respond with a 417 when it receives an unsupported expectation. > > The Expect mechanism is hop-by-hop: that is, an HTTP/1.1 proxy MUST > > return a 417 (Expectation Failed) status if it receives a request > > with an expectation that it cannot meet. However, the Expect > > request-header itself is end-to-end; it MUST be forwarded if the > > request is forwarded. This is ambiguous in that it does not specify how a proxy determines that it cannot meet an unknown expectation. As far as I can tell, you and Julian are reading this to suggest that when a proxy sees an unknown expectation-extension it must return a 417. The way I read it, if a proxy receives an unknown expectation-extension then it must go about determining whether or not the expectation can be met by the next-hop server. If it knows the next-hop server to be HTTP/1.0 then it can clearly bail out immediately with a 417 (as specifically outlined in 8.2.3 for the 100-continue case). Otherwise the only way it can determine whether or not the expectation can be met is by forwarding it to the next-hop server. My reading of the utility of the hop-by-hop nature of the Expect mechanism (which corresponds very cleanly with our desired use case) is that Expect headers can be inserted by proxies (as specified in 10.1), allowing the proxy which inserted the header to eat any corresponding 1xx informational response that is returned. Now whether or not proxies in the wild behave this way or not is the other half of the question which I am trying to determine. :-) Charles > Cheers, > > > > > > On 04/04/2008, at 10:47 AM, Charles Fry wrote: > > > Would you mind pointing us to the "related set of tests" which you refer > to? > > > > Also, could you specify just what you imply by passing and failing > > these tests? Specifically, how is correct proxy behavior defined for > > unknown Expect requests (I could see arguments either way based on my > > reading of the HTTP protocol spec)? > > > > thanks, > > Charles > > > > On Thu, Apr 3, 2008 at 7:06 PM, Mark Nottingham <mnot@yahoo-inc.com> > wrote: > > > > > > > > I've tested a fairly wide variety of proxies with co-advisor; the only > one > > > that passed the related set of tests was very recent builds of Squid > > > (2.7DEVEL0). Everything else -- including Squid 2.6STABLE4 -- failed (it > > > would take some digging to figure out exactly where this happened, > unless > > > Henrik knows; regardless, I think it's safe to say that a very large > > > proportion of Squid's installed base fails as well). > > > > > > Cheers, > > > > > > > > > On 04/04/2008, at 6:01 AM, Julian Reschke wrote: > > > > > > > > > > > > > > Hi, > > > > > > > > interesting: > > > > > > > > <http://code.google.com/p/google-gears/wiki/ResumableHttpRequestsProposal>. > > > > > > > > > > > In particular: > > > > > > > > "Note that section 14.20 of HTTP/1.1 indicates that "an HTTP/1.1 proxy > > > > > > > MUST return a 417 (Expectation Failed) status if it receives a request > with > > > an expectation that it cannot meet". We expect that fully compliant > proxies > > > ignore Expect pragmas which they don't understand (as opposed to > understand > > > but cannot meet), but this remains to be verified in the wild." > > > > > > > > > > > So does anybody know that proxies do here? > > > > > > > > BR, Julian > > > > > > > > > > > > > > > > > > -- > > > Mark Nottingham mnot@yahoo-inc.com > > > > > > > > > > > > > > > > > > > -- > > > Mark Nottingham mnot@yahoo-inc.com > > >
Received on Friday, 4 April 2008 00:35:23 UTC