diff --git a/core/constants.js b/core/constants.js index 1d07e9ac..756a5950 100644 --- a/core/constants.js +++ b/core/constants.js @@ -90,5 +90,6 @@ const Whitelist = { }; const BrowserType = { - 'CHROMIUM': chrome.runtime.getURL("/").startsWith("chrome-extension") + 'CHROMIUM': chrome.runtime.getURL("/").startsWith("chrome-extension"), + 'FIREFOX': chrome.runtime.getURL("/").startsWith("moz-extension") } diff --git a/core/manipulate-dom.js b/core/manipulate-dom.js new file mode 100644 index 00000000..c41e5018 --- /dev/null +++ b/core/manipulate-dom.js @@ -0,0 +1,97 @@ +/** + * Remove integrity checks from embedded CSS and JavaScript files + * Belongs to LocalCDN. + * + * @author nobody42 + * @since 2020-02-27 + * + * @license MPL 2.0 + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +'use strict'; + + +/** + * Manipulate DOM + */ + +var manipulateDOM = {}; + + +/** + * Private Methods + */ + +manipulateDOM._removeCrossOriginAndIntegrityAttr = function (details) { + + // by Jaap (https://gitlab.com/Jaaap) + // https://gitlab.com/nobody42/localcdn/-/issues/66 + let header = details.responseHeaders.find(h => h.name.toLowerCase() === 'content-type'); + + if (header && BrowserType.FIREFOX) { + + let mimeType, charset, initiatorDomain, isWhitelisted; + + mimeType = header.value.replace(/;.*/, '').toLowerCase(); + charset = /charset\s*=/.test(header.value) ? header.value.replace(/^.*?charset\s*=\s*/, '') : 'UTF-8'; + initiatorDomain = helpers.extractDomainFromUrl(details.url, true) || Address.EXAMPLE; + isWhitelisted = stateManager._domainIsWhitelisted(initiatorDomain); + + if (!isWhitelisted && mimeType === 'text/html') { + + header.value = 'text/html; charset=UTF-8'; + let decoder = new TextDecoder(charset); + let encoder = new TextEncoder(); + let filter = browser.webRequest.filterResponseData(details.requestId); + + //Note that this will not work if the ' + diff --git a/pages/updates/updates.html b/pages/updates/updates.html index 3e3d08af..81bd4a32 100644 --- a/pages/updates/updates.html +++ b/pages/updates/updates.html @@ -29,6 +29,7 @@
  • Added jQuery-csv v1.0.9, jQuery Ajax AutoComplete (Devbridge) v1.4.10 and Popper.js v1.16.1 (Fixed #68)
  • Font Awesome injections in Chromium deactivated (Fixed #67)
  • French translation updated
  • +
  • Error in encoding fixed (#66 comment: 334647377)
  • Please update your uBlock/uMatrix rules