|
|
@@ -0,0 +1,54 @@
|
|
|
+/*
|
|
|
+ * Copyright 2010-2019 Gildas Lormeau
|
|
|
+ * contact : gildas.lormeau <at> gmail.com
|
|
|
+ *
|
|
|
+ * This file is part of SingleFile.
|
|
|
+ *
|
|
|
+ * The code in this file is free software: you can redistribute it and/or
|
|
|
+ * modify it under the terms of the GNU Affero General Public License
|
|
|
+ * (GNU AGPL) as published by the Free Software Foundation, either version 3
|
|
|
+ * of the License, or (at your option) any later version.
|
|
|
+ *
|
|
|
+ * The code in this file is distributed in the hope that it will be useful,
|
|
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
|
|
|
+ * General Public License for more details.
|
|
|
+ *
|
|
|
+ * As additional permission under GNU AGPL version 3 section 7, you may
|
|
|
+ * distribute UNMODIFIED VERSIONS OF THIS file without the copy of the GNU
|
|
|
+ * AGPL normally required by section 4, provided you include this license
|
|
|
+ * notice and a URL through which recipients can access the Corresponding
|
|
|
+ * Source.
|
|
|
+ */
|
|
|
+
|
|
|
+/* global browser */
|
|
|
+
|
|
|
+const removedHeaders = ["access-control-allow-methods", "access-control-allow-headers"];
|
|
|
+const updatedHeaders = { "access-control-allow-origin": "*", "access-control-allow-credentials": "true" };
|
|
|
+
|
|
|
+browser.webRequest.onHeadersReceived.addListener(
|
|
|
+ function (details) {
|
|
|
+ let responseHeaders = details.responseHeaders;
|
|
|
+ let processedHeaders = [];
|
|
|
+ responseHeaders = responseHeaders.filter(responseHeader => !removedHeaders.includes(responseHeader.name.toLowerCase()));
|
|
|
+ responseHeaders.forEach(responseHeader => {
|
|
|
+ const name = responseHeader.name.toLowerCase();
|
|
|
+ const value = updatedHeaders[name];
|
|
|
+ if (value) {
|
|
|
+ responseHeader.value = value;
|
|
|
+ processedHeaders.push(name);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Object.keys(updatedHeaders).forEach(name => {
|
|
|
+ if (!processedHeaders.includes(name)) {
|
|
|
+ const value = updatedHeaders[name.toLowerCase()];
|
|
|
+ if (value) {
|
|
|
+ responseHeaders.push({ name, value });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return { responseHeaders };
|
|
|
+ },
|
|
|
+ { urls: ["<all_urls>"] },
|
|
|
+ ["blocking", "responseHeaders"]
|
|
|
+);
|