mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-15 00:03:28 +01:00
rewrite: don't rewrite ajax-requested html content
js regex: add special regex to rewrite '?location:'
This commit is contained in:
parent
52ce45beee
commit
40b0a291a9
@ -134,6 +134,8 @@ class JSLocationRewriterMixin(object):
|
||||
# (r'(?<![/$])\blocation\b(?!\":)', RegexRewriter.add_prefix(prefix), 0),
|
||||
(r'(?<![/$\'"-])\b(?:location|top)\b(?!(?:\":|:|=\d|-))', RegexRewriter.add_prefix(prefix), 0),
|
||||
|
||||
(r'(?<=[?])location[:]', RegexRewriter.add_prefix(prefix), 0),
|
||||
|
||||
(r'(?<=\.)postMessage\b\(', RegexRewriter.add_prefix('__WB_pmw(window).'), 0),
|
||||
|
||||
(r'(?<=\.)frameElement\b', RegexRewriter.add_prefix(prefix), 0),
|
||||
|
@ -6,12 +6,12 @@ from pywb.rewrite.rewrite_content import RewriteContent
|
||||
# ============================================================================
|
||||
# Expiermental: not fully tested
|
||||
class RewriteContentAMF(RewriteContent): #pragma: no cover
|
||||
def handle_custom_rewrite(self, rewritten_headers, stream, mod, env):
|
||||
def handle_custom_rewrite(self, rewritten_headers, stream, urlrewriter, mod, env):
|
||||
if rewritten_headers.status_headers.get_header('Content-Type') == 'application/x-amf':
|
||||
stream = self.rewrite_amf(stream, env)
|
||||
|
||||
return (super(RewriteContentAMF, self).
|
||||
handle_custom_rewrite(rewritten_headers, stream, mod, env))
|
||||
handle_custom_rewrite(rewritten_headers, stream, urlrewriter, mod, env))
|
||||
|
||||
def rewrite_amf(self, stream, env):
|
||||
try:
|
||||
|
@ -120,6 +120,7 @@ class RewriteContent(object):
|
||||
|
||||
res = self.handle_custom_rewrite(rewritten_headers,
|
||||
stream,
|
||||
urlrewriter,
|
||||
wb_url.mod,
|
||||
env)
|
||||
if res:
|
||||
@ -255,7 +256,9 @@ class RewriteContent(object):
|
||||
|
||||
return (status_headers, gen, True)
|
||||
|
||||
def handle_custom_rewrite(self, rewritten_headers, stream, mod, env):
|
||||
def handle_custom_rewrite(self, rewritten_headers, stream,
|
||||
urlrewriter, mod, env):
|
||||
|
||||
text_type = rewritten_headers.text_type
|
||||
status_headers = rewritten_headers.status_headers
|
||||
|
||||
@ -263,7 +266,8 @@ class RewriteContent(object):
|
||||
if text_type is None:
|
||||
return (status_headers, self.stream_to_gen(stream), False)
|
||||
|
||||
if text_type == 'plain' and not mod in ('js_', 'cs_'):
|
||||
if ((text_type == 'html' and urlrewriter.rewrite_opts.get('ajax')) or
|
||||
(text_type == 'plain' and not mod in ('js_', 'cs_'))):
|
||||
rewritten_headers.readd_rewrite_removed()
|
||||
return (status_headers, self.stream_to_gen(stream), False)
|
||||
|
||||
|
@ -48,6 +48,9 @@ class RewriteHandler(SearchPageWbUrlHandler):
|
||||
url = wbrequest.urlrewriter.get_new_url(type=type_, timestamp='')
|
||||
return WbResponse.redir_response(url)
|
||||
|
||||
if wbrequest.options['is_ajax']:
|
||||
wbrequest.urlrewriter.rewrite_opts['is_ajax'] = True
|
||||
|
||||
try:
|
||||
return self.render_content(wbrequest)
|
||||
|
||||
|
@ -163,6 +163,9 @@ class ReplayView(object):
|
||||
if wbrequest and wbrequest.wb_url:
|
||||
wbrequest.wb_url.url = cdx['url']
|
||||
|
||||
if wbrequest.options['is_ajax']:
|
||||
wbrequest.urlrewriter.rewrite_opts['is_ajax'] = True
|
||||
|
||||
head_insert_func = None
|
||||
if self.head_insert_view:
|
||||
head_insert_func = (self.head_insert_view.
|
||||
|
Loading…
x
Reference in New Issue
Block a user