Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Unified Diff: net/tools/testserver/testserver.py

Issue 8418024: Don't convert HEAD requests to GETs on 303 redirects. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Response to comments Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/url_request/url_request.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/tools/testserver/testserver.py
===================================================================
--- net/tools/testserver/testserver.py (revision 107962)
+++ net/tools/testserver/testserver.py (working copy)
@@ -266,9 +266,11 @@
class BasePageHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def __init__(self, request, client_address, socket_server,
- connect_handlers, get_handlers, post_handlers, put_handlers):
+ connect_handlers, get_handlers, head_handlers, post_handlers,
+ put_handlers):
self._connect_handlers = connect_handlers
self._get_handlers = get_handlers
+ self._head_handlers = head_handlers
self._post_handlers = post_handlers
self._put_handlers = put_handlers
BaseHTTPServer.BaseHTTPRequestHandler.__init__(
@@ -298,6 +300,11 @@
if handler():
return
+ def do_HEAD(self):
+ for handler in self._head_handlers:
+ if handler():
+ return
+
def do_POST(self):
for handler in self._post_handlers:
if handler():
@@ -351,13 +358,14 @@
self.DefaultResponseHandler]
post_handlers = [
self.EchoTitleHandler,
- self.EchoAllHandler,
self.EchoHandler,
self.DeviceManagementHandler] + get_handlers
put_handlers = [
self.EchoTitleHandler,
- self.EchoAllHandler,
self.EchoHandler] + get_handlers
+ head_handlers = [
+ self.FileHandler,
+ self.DefaultHeadResponseHandler]
self._mime_types = {
'crx' : 'application/x-chrome-extension',
@@ -371,8 +379,8 @@
self._default_mime_type = 'text/html'
BasePageHandler.__init__(self, request, client_address, socket_server,
- connect_handlers, get_handlers, post_handlers,
- put_handlers)
+ connect_handlers, get_handlers, head_handlers,
+ post_handlers, put_handlers)
def GetMIMETypeFromName(self, file_name):
"""Returns the mime type for the specified file_name. So far it only looks
@@ -944,7 +952,8 @@
self.send_header('ETag', '\'' + file_path + '\'')
self.end_headers()
- self.wfile.write(data)
+ if (self.command != 'HEAD'):
+ self.wfile.write(data)
return True
@@ -1357,6 +1366,16 @@
self.wfile.write(contents)
return True
+ def DefaultHeadResponseHandler(self):
+ """This is the catch-all response handler for HEAD requests that aren't
+ handled by one of the special handlers above."""
+
+ self.send_response(200)
+ self.send_header('Content-Type', 'text/html')
+ self.send_header('Content-Length', '0')
wtc 2011/10/31 23:02:51 An alternative to sending a Content-Length of 0 is
mmenke 2011/10/31 23:29:12 The last suggestion sounds like a good idea to me.
+ self.end_headers()
+ return True
+
def RedirectConnectHandler(self):
"""Sends a redirect to the CONNECT request for www.redirect.com. This
response is not specified by the RFC, so the browser should not follow
@@ -1463,7 +1482,7 @@
post_handlers = [self.ChromiumSyncCommandHandler,
self.ChromiumSyncTimeHandler]
BasePageHandler.__init__(self, request, client_address,
- sync_http_server, [], get_handlers,
+ sync_http_server, [], get_handlers, [],
post_handlers, [])
« no previous file with comments | « no previous file | net/url_request/url_request.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698