On Fri, Sep 17, 2010 at 2:06 PM, Armin Ronacher <armin.ronac...@active-4.com > wrote:
> Hi, > > > On 9/17/10 7:43 PM, Ian Bicking wrote: > >> I'm also not sure what motivated this particular change, but I don't >> have any opinion one way or the other. >> > Motivation is that WSGI wants servers to do something like this: > > if len(iterable) == 1 and content_length_header_missing: > headers.append(('Content-Length', str(len(iterable[0]))) > > However not everybody was doing that and some applications were setting a > content length header or not. If a content length header was not set some > middlewares that changed content worked properly even though they did not > check the header. The idea is that with web3 every tool in the chain is > supposed to look for that header and update it appropriately. > > Even the piglatin middleware from the PEP 333 did not check the content > length if I remember correctly. > OK, so maybe it should just be clarified: * Middleware and servers should not modify or add Content-Length, Date, or other headers unless they have reason to do so, and they must ensure that the response is valid (e.g., there should never be two Content-Length headers). It still seems reasonable that *if* there is no Content-Length, and the server can guess easily enough (mostly it is returned an actual list/tuple that we know can be introspected fast and without side effects), then it's perfectly reasonable to set it -- but certainly the server doesn't "own" that header (or any other, except maybe some connection-related headers?). -- Ian Bicking | http://blog.ianbicking.org
_______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com