diff --git a/pywb/rewrite/html_rewriter.py b/pywb/rewrite/html_rewriter.py index a855cda2..a2d3130a 100644 --- a/pywb/rewrite/html_rewriter.py +++ b/pywb/rewrite/html_rewriter.py @@ -167,6 +167,11 @@ class HTMLRewriterMixin(object): elif attr_name == 'style': attr_value = self._rewrite_css(attr_value) + # special case: disable crossorigin attr + # as they may interfere with rewriting semantics + elif attr_name == 'crossorigin': + attr_name = '_crossorigin' + # special case: meta tag elif (tag == 'meta') and (attr_name == 'content'): if self.has_attr(tag_attrs, ('http-equiv', 'refresh')): diff --git a/pywb/rewrite/test/test_html_rewriter.py b/pywb/rewrite/test/test_html_rewriter.py index 6236ae1e..f1949a0d 100644 --- a/pywb/rewrite/test/test_html_rewriter.py +++ b/pywb/rewrite/test/test_html_rewriter.py @@ -56,6 +56,10 @@ ur""" >>> parse('') +# Script tag + crossorigin +>>> parse('') + + # Unterminated script tag, handle and auto-terminate >>> parse(' diff --git a/pywb/rewrite/test/test_lxml_html_rewriter.py b/pywb/rewrite/test/test_lxml_html_rewriter.py index 038de4a8..d70f9ee0 100644 --- a/pywb/rewrite/test/test_lxml_html_rewriter.py +++ b/pywb/rewrite/test/test_lxml_html_rewriter.py @@ -51,6 +51,10 @@ ur""" >>> parse('') +# Script tag + crossorigin +>>> parse('') + + # Unterminated script tag, will auto-terminate >>> parse(' diff --git a/pywb/webapp/query_handler.py b/pywb/webapp/query_handler.py index 5254eafb..172a7c3f 100644 --- a/pywb/webapp/query_handler.py +++ b/pywb/webapp/query_handler.py @@ -33,14 +33,14 @@ class QueryHandler(object): @staticmethod def init_from_config(config, ds_rules_file=DEFAULT_RULES_FILE, - html_view=None): + html_view=None, + server_cls=None): perms_policy = None - server_cls = None if hasattr(config, 'get'): perms_policy = config.get('perms_policy') - server_cls = config.get('server_cls') + server_cls = config.get('server_cls', server_cls) cdx_server = create_cdx_server(config, ds_rules_file, server_cls) @@ -62,13 +62,6 @@ class QueryHandler(object): # init standard params params = self.get_query_params(wb_url) - # add any custom filter from the request - if wbrequest.query_filter: - params['filter'].extend(wbrequest.query_filter) - - if wbrequest.custom_params: - params.update(wbrequest.custom_params) - params['allowFuzzy'] = True params['url'] = wb_url.url params['output'] = output @@ -81,6 +74,14 @@ class QueryHandler(object): return self.make_cdx_response(wbrequest, params, cdx_iter) def load_cdx(self, wbrequest, params): + if wbrequest: + # add any custom filter from the request + if wbrequest.query_filter: + params['filter'].extend(wbrequest.query_filter) + + if wbrequest.custom_params: + params.update(wbrequest.custom_params) + if self.perms_policy: perms_op = make_perms_cdx_filter(self.perms_policy, wbrequest) if perms_op: diff --git a/pywb/webapp/views.py b/pywb/webapp/views.py index 1e9a1a8a..abf71494 100644 --- a/pywb/webapp/views.py +++ b/pywb/webapp/views.py @@ -104,6 +104,9 @@ class J2TemplateView: @staticmethod def create_template(filename, desc='', view_class=None): + if not filename: + return None + if not view_class: view_class = J2TemplateView