mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
wombat improvements:
- history change check: don't reject urls without a slash, check if new url == origin - new api: override window.fetch() if it exists - srcset elem rewriting, <source> element srcset override - ajax: don't add X-Pywb-Requested-With header if url is a data: url
This commit is contained in:
parent
8b77f66a10
commit
42a31bbebf
@ -18,7 +18,7 @@ This file is part of pywb, https://github.com/ikreymer/pywb
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//============================================
|
//============================================
|
||||||
// Wombat JS-Rewriting Library v2.17
|
// Wombat JS-Rewriting Library v2.18
|
||||||
//============================================
|
//============================================
|
||||||
|
|
||||||
|
|
||||||
@ -729,7 +729,9 @@ var wombat_internal = function($wbwindow) {
|
|||||||
|
|
||||||
var abs_url = extract_orig(url);
|
var abs_url = extract_orig(url);
|
||||||
|
|
||||||
if (abs_url && !starts_with(abs_url, $wbwindow.WB_wombat_location.origin + "/")) {
|
if (abs_url &&
|
||||||
|
(abs_url != $wbwindow.WB_wombat_location.origin) &&
|
||||||
|
!starts_with(abs_url, $wbwindow.WB_wombat_location.origin + "/")) {
|
||||||
throw new DOMException("Invalid history change: " + abs_url);
|
throw new DOMException("Invalid history change: " + abs_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -823,12 +825,34 @@ var wombat_internal = function($wbwindow) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
result = orig.call(this, method, url, async, user, password);
|
result = orig.call(this, method, url, async, user, password);
|
||||||
this.setRequestHeader('X-Pywb-Requested-With', 'XMLHttpRequest');
|
if (!starts_with(url, "data:")) {
|
||||||
|
this.setRequestHeader('X-Pywb-Requested-With', 'XMLHttpRequest');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$wbwindow.XMLHttpRequest.prototype.open = open_rewritten;
|
$wbwindow.XMLHttpRequest.prototype.open = open_rewritten;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//============================================
|
||||||
|
function init_fetch_rewrite()
|
||||||
|
{
|
||||||
|
if (!$wbwindow.fetch) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var orig_fetch = $wbwindow.fetch;
|
||||||
|
|
||||||
|
$wbwindow.fetch = function(input, init) {
|
||||||
|
if (typeof(input) === "string") {
|
||||||
|
input = rewrite_url(input);
|
||||||
|
} else if (typeof(input) === "object" && input.url) {
|
||||||
|
input.url = rewrite_url(input.url);
|
||||||
|
}
|
||||||
|
|
||||||
|
return orig_fetch.call(this, input, init);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//============================================
|
//============================================
|
||||||
function init_base_override()
|
function init_base_override()
|
||||||
{
|
{
|
||||||
@ -1267,6 +1291,7 @@ var wombat_internal = function($wbwindow) {
|
|||||||
changed = rewrite_frame_src(elem, "src");
|
changed = rewrite_frame_src(elem, "src");
|
||||||
} else {
|
} else {
|
||||||
changed = rewrite_attr(elem, "src");
|
changed = rewrite_attr(elem, "src");
|
||||||
|
changed = rewrite_attr(elem, "srcset") || changed;
|
||||||
changed = rewrite_attr(elem, "href") || changed;
|
changed = rewrite_attr(elem, "href") || changed;
|
||||||
changed = rewrite_attr(elem, "style") || changed;
|
changed = rewrite_attr(elem, "style") || changed;
|
||||||
changed = rewrite_attr(elem, "poster") || changed;
|
changed = rewrite_attr(elem, "poster") || changed;
|
||||||
@ -1466,6 +1491,7 @@ var wombat_internal = function($wbwindow) {
|
|||||||
override_attr($wbwindow.HTMLAudioElement.prototype, "src", "oe_");
|
override_attr($wbwindow.HTMLAudioElement.prototype, "src", "oe_");
|
||||||
override_attr($wbwindow.HTMLAudioElement.prototype, "poster", "im_");
|
override_attr($wbwindow.HTMLAudioElement.prototype, "poster", "im_");
|
||||||
override_attr($wbwindow.HTMLSourceElement.prototype, "src", "oe_");
|
override_attr($wbwindow.HTMLSourceElement.prototype, "src", "oe_");
|
||||||
|
override_attr($wbwindow.HTMLSourceElement.prototype, "srcset", "oe_");
|
||||||
override_attr($wbwindow.HTMLInputElement.prototype, "src", "oe_");
|
override_attr($wbwindow.HTMLInputElement.prototype, "src", "oe_");
|
||||||
override_attr($wbwindow.HTMLEmbedElement.prototype, "src", "oe_");
|
override_attr($wbwindow.HTMLEmbedElement.prototype, "src", "oe_");
|
||||||
override_attr($wbwindow.HTMLObjectElement.prototype, "data", "oe_");
|
override_attr($wbwindow.HTMLObjectElement.prototype, "data", "oe_");
|
||||||
@ -2384,6 +2410,9 @@ var wombat_internal = function($wbwindow) {
|
|||||||
// Ajax
|
// Ajax
|
||||||
init_ajax_rewrite();
|
init_ajax_rewrite();
|
||||||
|
|
||||||
|
// Fetch
|
||||||
|
init_fetch_rewrite();
|
||||||
|
|
||||||
if (!wb_opts.skip_disable_worker) {
|
if (!wb_opts.skip_disable_worker) {
|
||||||
//init_worker_override();
|
//init_worker_override();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user