/** * 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 '