diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index 3ad01b7..bacbdcf 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -184,6 +184,20 @@ function switchInstance(url) { return `${randomInstance}${url.pathname}${url.search}`; } +function removeXFrameOptions(e) { + let url = new URL(e.url); + let protocolHost = `${url.protocol}//${url.host}`; + let twitterList = [ + ...redirects.nitter.normal, + ...redirects.nitter.tor, + ...nitterNormalCustomRedirects, + ...nitterTorCustomRedirects, + ]; + if (!twitterList.includes(protocolHost) && e.type != 'sub_frame') return; + for (const i in e.responseHeaders) if (e.responseHeaders[i].name = 'x-frame-options') e.responseHeaders.splice(i, 1); + return { responseHeaders: e.responseHeaders }; +} + function isNitter(url, type) { let protocolHost = `${url.protocol}//${url.host}`; @@ -299,6 +313,8 @@ export default { getBypassWatchOnTwitter, setBypassWatchOnTwitter, + removeXFrameOptions, + getProtocol, setProtocol, diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 9b32bbd..0d92e93 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -131,6 +131,16 @@ browser.tabs.onRemoved.addListener( } ); + +// Set "blocking" and "responseHeaders". +browser.webRequest.onHeadersReceived.addListener( + e => { + return twitterHelper.removeXFrameOptions(e); + }, + { urls: [""], }, + ["blocking", "responseHeaders"] +); + function redirectOfflineInstance(url, tabId) { let newUrl;