Fix cookie removal on subdomains of base domain · gorhill/uBlock@c4d39d3 (original) (raw)

Original file line number Diff line number Diff line change
@@ -1197,14 +1197,14 @@
1197 1197 // https://github.com/NanoAdblocker/NanoFilters/issues/149
1198 1198 /// cookie-remover.js
1199 1199 (function() {
1200 -let needle = '{{1}}',
1201 - reName = /./;
1200 +const needle = '{{1}}';
1201 +let reName = /./;
1202 1202 if ( /^\/.+\/$/.test(needle) ) {
1203 1203 reName = new RegExp(needle.slice(1,-1));
1204 1204 } else if ( needle !== '' && needle !== '{{1}}' ) {
1205 1205 reName = new RegExp(needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
1206 1206 }
1207 -let removeCookie = function() {
1207 +const removeCookie = function() {
1208 1208 document.cookie.split(';').forEach(cookieStr => {
1209 1209 let pos = cookieStr.indexOf('=');
1210 1210 if ( pos === -1 ) { return; }
@@ -1213,8 +1213,16 @@
1213 1213 let part1 = cookieName + '=';
1214 1214 let part2a = '; domain=' + document.location.hostname;
1215 1215 let part2b = '; domain=.' + document.location.hostname;
1216 +let part2c, part2d;
1216 1217 let domain = document.domain;
1217 -let part2c = domain && domain !== document.location.hostname ? '; domain=.' + domain : undefined;
1218 +if ( domain ) {
1219 +if ( domain !== document.location.hostname ) {
1220 +part2c = '; domain=.' + domain;
1221 +}
1222 +if ( domain.startsWith('www.') ) {
1223 +part2d = '; domain=' + domain.replace('www', '');
1224 +}
1225 +}
1218 1226 let part3 = '; path=/';
1219 1227 let part4 = '; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT';
1220 1228 document.cookie = part1 + part4;
@@ -1226,6 +1234,9 @@
1226 1234 if ( part2c !== undefined ) {
1227 1235 document.cookie = part1 + part2c + part3 + part4;
1228 1236 }
1237 +if ( part2d !== undefined ) {
1238 +document.cookie = part1 + part2d + part3 + part4;
1239 +}
1229 1240 });
1230 1241 };
1231 1242 removeCookie();