about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-06-06 19:30:07 +0300
committerManeraKai <manerakai@protonmail.com>2022-06-06 19:30:07 +0300
commitadbfb9a89008858f308e4793979bb479dd8abf6a (patch)
treec447410a80b010e75b61d3a953bd5e505b1ea402 /src
parentAdding weblate. Changing small things (diff)
downloadlibredirect-adbfb9a89008858f308e4793979bb479dd8abf6a.zip
Fix removeXFrameOptions not working in YT #279
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/twitter.js15
-rw-r--r--src/assets/javascripts/youtube/youtube.js8
-rw-r--r--src/pages/background/background.js8
3 files changed, 20 insertions, 11 deletions
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
index 1ee7f755..59b784bb 100644
--- a/src/assets/javascripts/twitter.js
+++ b/src/assets/javascripts/twitter.js
@@ -133,13 +133,20 @@ function switchInstance(url) {
 }
 
 function removeXFrameOptions(e) {
+  if (e.type != 'sub_frame') return;
   let url = new URL(e.url);
   let protocolHost = utils.protocolHost(url);
-  if (!all().includes(protocolHost) || e.type != 'sub_frame') return;
+  if (!all().includes(protocolHost)) return;
   let isChanged = false;
-  for (const i in e.responseHeaders) if (e.responseHeaders[i].name == 'x-frame-options') {
-    e.responseHeaders.splice(i, 1);
-    isChanged = true;
+  for (const i in e.responseHeaders) {
+    if (e.responseHeaders[i].name == 'x-frame-options') {
+      e.responseHeaders.splice(i, 1);
+      isChanged = true;
+    }
+    else if (e.responseHeaders[i].name == 'content-security-policy') {
+      e.responseHeaders.splice(i, 1);
+      isChanged = true;
+    }
   }
   if (isChanged) return { responseHeaders: e.responseHeaders };
 }
diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js
index 6f022e21..61e73fdf 100644
--- a/src/assets/javascripts/youtube/youtube.js
+++ b/src/assets/javascripts/youtube/youtube.js
@@ -426,13 +426,17 @@ function removeXFrameOptions(e) {
   const url = new URL(e.url);
   const protocolHost = utils.protocolHost(url);
   if (!all().includes(protocolHost)) return;
-
   let isChanged = false;
-  for (const i in e.responseHeaders)
+  for (const i in e.responseHeaders) {
     if (e.responseHeaders[i].name == 'x-frame-options') {
       e.responseHeaders.splice(i, 1);
       isChanged = true;
     }
+    else if (e.responseHeaders[i].name == 'content-security-policy') {
+      e.responseHeaders.splice(i, 1);
+      isChanged = true;
+    }
+  }
   if (isChanged) return { responseHeaders: e.responseHeaders };
 }
 
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index c5f1718d..88daa6cd 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -33,7 +33,6 @@ function openResetWarning() {
   })
 }
 
-
 browser.runtime.onInstalled.addListener(
   async details => {
     // if (details.reason == 'install') {
@@ -140,7 +139,6 @@ browser.webRequest.onBeforeRequest.addListener(
   ["blocking"]
 );
 
-
 let incognitoList = [];
 browser.tabs.onCreated.addListener(
   tab => {
@@ -164,9 +162,9 @@ browser.tabs.onRemoved.addListener(
 );
 
 browser.webRequest.onHeadersReceived.addListener(
-  async e => {
-    let response = twitterHelper.removeXFrameOptions(e)
-    if (!response) youtubeHelper.removeXFrameOptions(e)
+  e => {
+    let response = twitterHelper.removeXFrameOptions(e);
+    if (!response) response = youtubeHelper.removeXFrameOptions(e);
     return response;
   },
   { urls: ["<all_urls>"], },