Index: trac/mimeview/api.py
===================================================================
--- trac/mimeview/api.py	(revision 8079)
+++ trac/mimeview/api.py	(working copy)
@@ -914,6 +914,7 @@
                                                          content, selector)
         req.send_response(200)
         req.send_header('Content-Type', output_type)
+        req.send_header('Content-Length', len(content))
         if filename:
             req.send_header('Content-Disposition', 'filename=%s.%s' % 
                         (filename, ext))
Index: trac/web/standalone.py
===================================================================
--- trac/web/standalone.py	(revision 8079)
+++ trac/web/standalone.py	(working copy)
@@ -102,9 +102,11 @@
 
 class TracHTTPServer(ThreadingMixIn, WSGIServer):
 
-    def __init__(self, server_address, application, env_parent_dir, env_paths):
+    def __init__(self, server_address, application, env_parent_dir, env_paths,
+                 use_http_11=False):
+        request_handlers = (TracHTTPRequestHandler, TracHTTP11RequestHandler)
         WSGIServer.__init__(self, server_address, application,
-                            request_handler=TracHTTPRequestHandler)
+                            request_handler=request_handlers[bool(use_http_11)])
 
 
 class TracHTTPRequestHandler(WSGIRequestHandler):
@@ -115,7 +117,10 @@
         # Disable reverse name lookups
         return self.client_address[:2][0]
 
+class TracHTTP11RequestHandler(TracHTTPRequestHandler):
+    protocol_version = 'HTTP/1.1'
 
+
 def main():
     from optparse import OptionParser, OptionValueError
     parser = OptionParser(usage='usage: %prog [options] [projenv] ...',
@@ -161,6 +166,8 @@
     parser.add_option('-q', '--unquote', action='store_true',
                       dest='unquote',
                       help='unquote PATH_INFO (may be needed when using ajp')
+    parser.add_option('--http11', action='store_true', dest='http11',
+                      help='use HTTP/1.1 protocol version instead of HTTP/1.0')
     parser.add_option('-e', '--env-parent-dir', action='store',
                       dest='env_parent_dir', metavar='PARENTDIR',
                       help='parent directory of the project environments')
@@ -237,7 +244,9 @@
     if options.protocol == 'http':
         def serve():
             httpd = TracHTTPServer(server_address, wsgi_app,
-                                   options.env_parent_dir, args)
+                                   options.env_parent_dir, args,
+                                   use_http_11=options.http11)
+
             print 'Server starting in PID %i.' % os.getpid()
             addr, port = server_address
             if not addr or addr == '0.0.0.0':
@@ -245,6 +254,8 @@
                        % (port, port, base_path)
             else:
                 print 'Serving on http://%s:%s/%s' % (addr, port, base_path)
+            if options.http11:
+                print 'Using HTTP/1.1 protocol version'
             httpd.serve_forever()
     elif options.protocol in ('scgi', 'ajp'):
         def serve():
Index: trac/web/auth.py
===================================================================
--- trac/web/auth.py	(revision 8079)
+++ trac/web/auth.py	(working copy)
@@ -295,8 +295,8 @@
                     return user
 
         start_response('401 Unauthorized',
-                       [('WWW-Authenticate', 'Basic realm="%s"'
-                         % self.realm)])('')
+                       [('WWW-Authenticate', 'Basic realm="%s"' % self.realm),
+                        ('Content-Length', 0)])('')
 
 
 class DigestAuthentication(PasswordFileAuthentication):
@@ -351,7 +351,8 @@
         start_response('401 Unauthorized',
                        [('WWW-Authenticate',
                         'Digest realm="%s", nonce="%s", qop="auth", stale="%s"'
-                        % (self.realm, nonce, stale))])('')
+                        % (self.realm, nonce, stale)),
+                        ('Content-Length', 0)])('')
 
     def do_auth(self, environ, start_response):
         header = environ.get('HTTP_AUTHORIZATION')
Index: trac/web/api.py
===================================================================
--- trac/web/api.py	(revision 8079)
+++ trac/web/api.py	(working copy)
@@ -308,13 +308,12 @@
 
         self.send_header('Location', url)
         self.send_header('Content-Type', 'text/plain')
+        self.send_header('Content-Length', 0)
         self.send_header('Pragma', 'no-cache')
         self.send_header('Cache-control', 'no-cache')
         self.send_header('Expires', 'Fri, 01 Jan 1999 00:00:00 GMT')
         self.end_headers()
 
-        if self.method != 'HEAD':
-            self.write('Redirecting...')
         raise RequestDone
 
     def display(self, template, content_type='text/html', status=200):
@@ -406,6 +405,7 @@
         last_modified = http_date(mtime)
         if last_modified == self.get_header('If-Modified-Since'):
             self.send_response(304)
+            self.send_header('Content-Length', 0)
             self.end_headers()
             raise RequestDone
 

