[z3-checkins] r34690 - z3/deliverance/trunk/deliverance
ianb at codespeak.net
ianb at codespeak.net
Thu Nov 16 19:37:21 CET 2006
Author: ianb
Date: Thu Nov 16 19:37:17 2006
New Revision: 34690
Modified:
z3/deliverance/trunk/deliverance/relocateresponse.py
z3/deliverance/trunk/deliverance/test_relocate.txt
Log:
Added cookie domain rewriting
Modified: z3/deliverance/trunk/deliverance/relocateresponse.py
==============================================================================
--- z3/deliverance/trunk/deliverance/relocateresponse.py (original)
+++ z3/deliverance/trunk/deliverance/relocateresponse.py Thu Nov 16 19:37:17 2006
@@ -22,6 +22,16 @@
for name, value in headers:
if name.lower() == 'location':
value = relocate_href(value, base_href, old_href, new_href)
+ if name.lower() == 'set-cookie':
+ if 'domain' in value:
+ # We have to rewrite the domain
+ old_domain = urlparse.urlsplit(old_href)[1].split(':')[0]
+ new_domain = urlparse.urlsplit(new_href)[1].split(':')[0]
+ def repl(match):
+ return match.group(1)+new_domain
+ value = re.sub(
+ r'(domain=[^ ",]*)%s' % re.escape(old_domain),
+ repl, value)
new_headers.append((name, value))
return new_headers
Modified: z3/deliverance/trunk/deliverance/test_relocate.txt
==============================================================================
--- z3/deliverance/trunk/deliverance/test_relocate.txt (original)
+++ z3/deliverance/trunk/deliverance/test_relocate.txt Thu Nov 16 19:37:17 2006
@@ -47,14 +47,23 @@
>>> relocate_href('index.html', **kw)
'https://new/base/index.html'
-Now we look at header rewriting. Note that Location is rewritten, but
-other headers are not. (Set-Cookie should also get some rewriting,
-but does not yet)::
+Now we look at header rewriting. Note that Location and Set-Cookie is
+rewritten, but other headers are not::
- >>> relocate_headers([('X-Unknown', 'http://old'),
- ... ('Location', 'http://old/foo/bar')],
- ... **kw)
- [('X-Unknown', 'http://old'), ('Location', 'https://new/foo/bar')]
+ >>> relocate_headers(
+ ... [('X-Unknown', 'http://old'),
+ ... ('Location', 'http://old/foo/bar'),
+ ... ('Set-Cookie', 'foo=bar; domain=old')],
+ ... **kw)
+ [('X-Unknown', 'http://old'), ('Location', 'https://new/foo/bar'), ('Set-Cookie', 'foo=bar; domain=new')]
+
+We'll even rewrite wildcard domains, though that might not be a good
+idea::
+
+ >>> relocate_headers(
+ ... [('Set-Cookie', 'foo=bar; domain=*.old')],
+ ... **kw)
+ [('Set-Cookie', 'foo=bar; domain=*.new')]
But the location header won't be rewritten if it points to a
third-party site::
More information about the z3-checkins
mailing list