1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-15 00:03:28 +01:00

cookies: support client side rewriting of document.cooke -> WB_wombat_cookie to rewrite cookie path, if present

This commit is contained in:
Ilya Kreymer 2014-07-15 12:52:42 -07:00
parent e858b8faae
commit fa52e0126d
2 changed files with 29 additions and 0 deletions

View File

@ -126,6 +126,7 @@ class JSLinkAndLocationRewriter(JSLinkOnlyRewriter):
(r'(?<!/)\blocation\b', RegexRewriter.add_prefix(prefix), 0),
(r'(?<=document\.)domain', RegexRewriter.add_prefix(prefix), 0),
(r'(?<=document\.)referrer', RegexRewriter.add_prefix(prefix), 0),
(r'(?<=document\.)cookie', RegexRewriter.add_prefix(prefix), 0),
#todo: move to mixin?
(r'(?:[\s=(){]|^)(top)(?:[\s!=}()]|$)',

View File

@ -639,6 +639,31 @@ WB_wombat_init = (function() {
}
}
function init_cookies_override()
{
var cookie_path_regex = /\bPath=\'?\"?([^;'"\s]+)/i;
var get_cookie = function() {
return document.cookie;
}
var set_cookie = function(value) {
var matched = value.match(cookie_path_regex);
// if has cookie path, rewrite and replace
if (matched) {
var rewritten = rewrite_url(matched[1]);
value = value.replace(matched[1], rewritten);
}
document.cookie = value;
}
def_prop(document, "WB_wombat_cookie", document.cookie,
set_cookie,
get_cookie);
}
//============================================
function init_write_override()
{
@ -747,6 +772,9 @@ WB_wombat_init = (function() {
// Ajax
init_ajax_rewrite();
init_worker_override();
// Cookies
init_cookies_override();
// DOM
init_dom_override();