diff options
author | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-07 17:09:19 +0000 |
---|---|---|
committer | battre@chromium.org <battre@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-07 17:09:19 +0000 |
commit | 07bca6fd81dcf5589faddcc7d4a6c64aba988e54 (patch) | |
tree | 60cbea2f99db19acdee068ff80620cf7298c3001 /net/tools | |
parent | 4b6c04e2b6216c11e627f2e18add2483f990b144 (diff) | |
download | chromium_src-07bca6fd81dcf5589faddcc7d4a6c64aba988e54.zip chromium_src-07bca6fd81dcf5589faddcc7d4a6c64aba988e54.tar.gz chromium_src-07bca6fd81dcf5589faddcc7d4a6c64aba988e54.tar.bz2 |
Support UTF8 in header values in webRequest API.
This support for UTF8 in header values is necessary to prevent DCHECKs and to ensure that extensions using the webRequest API don't modify headers unintentionally because the headers cannot be serialized correctly on the roundtrip between the network stack and the extension.
BUG=none
TEST=no
Review URL: http://codereview.chromium.org/8480008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108879 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/tools')
-rwxr-xr-x | net/tools/testserver/testserver.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/net/tools/testserver/testserver.py b/net/tools/testserver/testserver.py index bc7f5e1..59975c7 100755 --- a/net/tools/testserver/testserver.py +++ b/net/tools/testserver/testserver.py @@ -28,6 +28,7 @@ import socket import sys import struct import time +import urllib import urlparse import warnings import zlib @@ -345,6 +346,7 @@ class TestPageHandler(BasePageHandler): self.ZipFileHandler, self.FileHandler, self.SetCookieHandler, + self.SetHeaderHandler, self.AuthBasicHandler, self.AuthDigestHandler, self.SlowServerHandler, @@ -977,6 +979,29 @@ class TestPageHandler(BasePageHandler): self.wfile.write('%s' % cookie_value) return True + def SetHeaderHandler(self): + """This handler sets a response header. Parameters are in the + key%3A%20value&key2%3A%20value2 format.""" + + if not self._ShouldHandleRequest("/set-header"): + return False + + query_char = self.path.find('?') + if query_char != -1: + headers_values = self.path[query_char + 1:].split('&') + else: + headers_values = ("",) + self.send_response(200) + self.send_header('Content-Type', 'text/html') + for header_value in headers_values: + header_value = urllib.unquote(header_value) + (key, value) = header_value.split(': ', 1) + self.send_header(key, value) + self.end_headers() + for header_value in headers_values: + self.wfile.write('%s' % header_value) + return True + def AuthBasicHandler(self): """This handler tests 'Basic' authentication. It just sends a page with title 'user/pass' if you succeed.""" |