mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +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)
|
||||
|
||||
def translate_headers(self, env, header_list=None):
|
||||
def translate_headers(self, url, env):
|
||||
headers = {}
|
||||
|
||||
if not header_list:
|
||||
header_list = self.PROXY_HEADER_LIST
|
||||
splits = urlsplit(url)
|
||||
|
||||
for env_name, req_name in header_list:
|
||||
value = env.get(env_name)
|
||||
if value:
|
||||
headers[req_name] = value
|
||||
for name, value in env.iteritems():
|
||||
if name == 'HTTP_HOST':
|
||||
name = 'Host'
|
||||
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
|
||||
|
||||
@ -76,17 +92,7 @@ class LiveRewriter(object):
|
||||
method = env['REQUEST_METHOD'].upper()
|
||||
input_ = env['wsgi.input']
|
||||
|
||||
host = env.get('HTTP_HOST')
|
||||
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))
|
||||
req_headers.update(self.translate_headers(url, env))
|
||||
|
||||
if method in ('POST', 'PUT'):
|
||||
len_ = env.get('CONTENT_LENGTH')
|
||||
|
Loading…
x
Reference in New Issue
Block a user