mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
rewrite: live rewrite: switch to including all headers rather than a whitelist for proxying
This commit is contained in:
parent
41e1809039
commit
dfef05a74d
@ -50,16 +50,32 @@ class LiveRewriter(object):
|
|||||||
|
|
||||||
return (status_headers, stream)
|
return (status_headers, stream)
|
||||||
|
|
||||||
def translate_headers(self, env, header_list=None):
|
def translate_headers(self, url, env):
|
||||||
headers = {}
|
headers = {}
|
||||||
|
|
||||||
if not header_list:
|
splits = urlsplit(url)
|
||||||
header_list = self.PROXY_HEADER_LIST
|
|
||||||
|
|
||||||
for env_name, req_name in header_list:
|
for name, value in env.iteritems():
|
||||||
value = env.get(env_name)
|
if name == 'HTTP_HOST':
|
||||||
if value:
|
name = 'Host'
|
||||||
headers[req_name] = value
|
value = splits.netloc
|
||||||
|
|
||||||
|
elif name == 'HTTP_ORIGIN':
|
||||||
|
name = 'Origin'
|
||||||
|
value = (splits.scheme + '://' + splits.netloc)
|
||||||
|
|
||||||
|
elif name.startswith('HTTP_'):
|
||||||
|
name = name[5:].title().replace('_', '-')
|
||||||
|
|
||||||
|
elif name in ('CONTENT_LENGTH', 'CONTENT_TYPE'):
|
||||||
|
name = name.title().replace('_', '-')
|
||||||
|
|
||||||
|
elif name == 'REL_REFERER':
|
||||||
|
name = 'Referer'
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
|
||||||
|
headers[name] = value
|
||||||
|
|
||||||
return headers
|
return headers
|
||||||
|
|
||||||
@ -76,17 +92,7 @@ class LiveRewriter(object):
|
|||||||
method = env['REQUEST_METHOD'].upper()
|
method = env['REQUEST_METHOD'].upper()
|
||||||
input_ = env['wsgi.input']
|
input_ = env['wsgi.input']
|
||||||
|
|
||||||
host = env.get('HTTP_HOST')
|
req_headers.update(self.translate_headers(url, env))
|
||||||
origin = env.get('HTTP_ORIGIN')
|
|
||||||
if host or origin:
|
|
||||||
splits = urlsplit(url)
|
|
||||||
if host:
|
|
||||||
req_headers['Host'] = splits.netloc
|
|
||||||
if origin:
|
|
||||||
new_origin = (splits.scheme + '://' + splits.netloc)
|
|
||||||
req_headers['Origin'] = new_origin
|
|
||||||
|
|
||||||
req_headers.update(self.translate_headers(env))
|
|
||||||
|
|
||||||
if method in ('POST', 'PUT'):
|
if method in ('POST', 'PUT'):
|
||||||
len_ = env.get('CONTENT_LENGTH')
|
len_ = env.get('CONTENT_LENGTH')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user