- From: Mark Nottingham <mnot@mnot.net>
- Date: Thu, 19 Jul 2001 18:40:15 -0700
- To: Mark Baker <distobj@acm.org>
- Cc: christopher ferris <chris.ferris@east.sun.com>, xml-dist-app@w3.org
On Thu, Jul 19, 2001 at 09:17:58PM -0400, Mark Baker wrote: > >> How does Expect help in this situation? > > Expect has basically identical semantics to mustUnderstand. The > only difference being that mustUnderstand is explicitly associated > with a header block, whereas Expect isn't associated with anything > in particular. Aha. This is a perfect illustration of the dangers of mixing up SOAP semantics and HTTP semantics. Expect is a directive that was hand-tailored for the case that a client might have a big POST that they weren't sure that a server could support; in conjunction with a 100 Continute response, it allows for this check. Although Expect does permit expectation-extensions, they would be extensions to HTTP itself; the server is required to understand them to process them. They have nothing to do with the semantic of the entity body's content, but rather the HTTP protocol mechanism. Furthermore, the processing of Expect is hop-by-hop; HTTP intermediaries must understand the expectation to process it. From 14.20: 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. It may be helpful to understand that when RFC2616 uses 'server', it can mean ANY device that accepts HTTP connections, including proxies, gateways (surrogates), not just origin servers. All of this means that if we use Expect and 417 to indicate mU conditions and faults, we'll get serious interoperability issues with both server and intermediary implementations. For example, 1-143:~> telnet www.mnot.net 80 Trying 64.170.196.246... Connected to www.mnot.net. Escape character is '^]'. GET / HTTP/1.0 Expect: foo HTTP/1.1 417 Expectation Failed Date: Fri, 20 Jul 2001 01:25:28 GMT Server: Apache/1.3.12 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD> <TITLE>417 Expectation Failed</TITLE> </HEAD><BODY> <H1>Expectation Failed</H1> The expectation given in the Expect request-header field could not be met by this server.<P> The client sent<PRE> Expect: foo </PRE> but we only allow the 100-continue expectation. </BODY></HTML> Connection closed by foreign host. There is no way to change this behaviour, AFAIK, without fiddling with Apache's internals (module, etc.) -- Mark Nottingham http://www.mnot.net/
Received on Thursday, 19 July 2001 21:40:23 UTC