mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-29 00:52:29 +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'(?<![/$])\blocation\b(?!\":)', RegexRewriter.add_prefix(prefix), 0),
|
||||||
(r'(?<![/$\'"-])\b(?:location|top)\b(?!(?:\":|:|=\d|-))', 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'(?<=\.)postMessage\b\(', RegexRewriter.add_prefix('__WB_pmw(window).'), 0),
|
||||||
|
|
||||||
(r'(?<=\.)frameElement\b', RegexRewriter.add_prefix(prefix), 0),
|
(r'(?<=\.)frameElement\b', RegexRewriter.add_prefix(prefix), 0),
|
||||||
|
@ -6,12 +6,12 @@ from pywb.rewrite.rewrite_content import RewriteContent
|
|||||||
# ============================================================================
|
# ============================================================================
|
||||||
# Expiermental: not fully tested
|
# Expiermental: not fully tested
|
||||||
class RewriteContentAMF(RewriteContent): #pragma: no cover
|
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':
|
if rewritten_headers.status_headers.get_header('Content-Type') == 'application/x-amf':
|
||||||
stream = self.rewrite_amf(stream, env)
|
stream = self.rewrite_amf(stream, env)
|
||||||
|
|
||||||
return (super(RewriteContentAMF, self).
|
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):
|
def rewrite_amf(self, stream, env):
|
||||||
try:
|
try:
|
||||||
|
@ -120,6 +120,7 @@ class RewriteContent(object):
|
|||||||
|
|
||||||
res = self.handle_custom_rewrite(rewritten_headers,
|
res = self.handle_custom_rewrite(rewritten_headers,
|
||||||
stream,
|
stream,
|
||||||
|
urlrewriter,
|
||||||
wb_url.mod,
|
wb_url.mod,
|
||||||
env)
|
env)
|
||||||
if res:
|
if res:
|
||||||
@ -255,7 +256,9 @@ class RewriteContent(object):
|
|||||||
|
|
||||||
return (status_headers, gen, True)
|
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
|
text_type = rewritten_headers.text_type
|
||||||
status_headers = rewritten_headers.status_headers
|
status_headers = rewritten_headers.status_headers
|
||||||
|
|
||||||
@ -263,7 +266,8 @@ class RewriteContent(object):
|
|||||||
if text_type is None:
|
if text_type is None:
|
||||||
return (status_headers, self.stream_to_gen(stream), False)
|
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()
|
rewritten_headers.readd_rewrite_removed()
|
||||||
return (status_headers, self.stream_to_gen(stream), False)
|
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='')
|
url = wbrequest.urlrewriter.get_new_url(type=type_, timestamp='')
|
||||||
return WbResponse.redir_response(url)
|
return WbResponse.redir_response(url)
|
||||||
|
|
||||||
|
if wbrequest.options['is_ajax']:
|
||||||
|
wbrequest.urlrewriter.rewrite_opts['is_ajax'] = True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return self.render_content(wbrequest)
|
return self.render_content(wbrequest)
|
||||||
|
|
||||||
|
@ -163,6 +163,9 @@ class ReplayView(object):
|
|||||||
if wbrequest and wbrequest.wb_url:
|
if wbrequest and wbrequest.wb_url:
|
||||||
wbrequest.wb_url.url = cdx['url']
|
wbrequest.wb_url.url = cdx['url']
|
||||||
|
|
||||||
|
if wbrequest.options['is_ajax']:
|
||||||
|
wbrequest.urlrewriter.rewrite_opts['is_ajax'] = True
|
||||||
|
|
||||||
head_insert_func = None
|
head_insert_func = None
|
||||||
if self.head_insert_view:
|
if self.head_insert_view:
|
||||||
head_insert_func = (self.head_insert_view.
|
head_insert_func = (self.head_insert_view.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user