Brian Smith ha scritto: > My application correctly responds to HEAD requests as-is. However, it doesn't > work with middleware that sets headers based on the content of the response > body. > > For example, a gateway or middleware that sets ETag based on an checksum, > Content-Encoding, Content-Length and/or Content-MD5 will all result in wrong > results by default. Right now, my applications assume that any such gateway > or the first such middleware will change environ["REQUEST_METHOD"] from > "HEAD" to "GET" before the application is invoked, and discard the response > body that the application generates. > > However, many gateways and middleware do not do this, and PEP 333 doesn't > have anything to say about it. As a result, a 100% WSGI 1.0-compliant > application is not portable between gateways. > > I suggest that a revision of PEP 333 should require the following behavior: > > 1. WSGI gateways must always set environ["REQUEST_METHOD"] to "GET" for HEAD > requests. Middleware and applications will not be able to detect the > difference between GET and HEAD requests. >
-1. > 2. For a HEAD request, A WSGI gateway must not iterate through the response > iterable, but it must call the response iterable's close() method, if any. It > must not send any output that was written via start_response(...).write() > either. Consequently, WSGI applications must work correctly, and must not > leak resources, when their output is not iterated; an application should not > signal or log an error if the iterable's close() method is invoked without > any iteration taking place. > This is done in the WSGI implementation for Nginx, as an example; and some time ago there was a discussion about this. Moreover, if the response iterable is a generator, no iteration (and content generation) is done. > Please add this issue to http://wsgi.org/wsgi/WSGI_2.0. > > Regards, > Brian > Regards Manlio Perillo _______________________________________________ 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