Skip to content

Commit a1cb2e0

Browse files
committed
🐛 修复firefox service worker csp的问题 #533
1 parent 73d6c65 commit a1cb2e0

2 files changed

Lines changed: 17 additions & 9 deletions

File tree

src/pkg/config/chrome_storage.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,15 @@ export default class ChromeStorage {
4646
const ret: { [key: string]: any } = {};
4747
const prefix = this.buildKey("");
4848
this.storage.get((items) => {
49+
if (!items) {
50+
return resolve({});
51+
}
4952
Object.keys(items).forEach((key) => {
5053
if (key.startsWith(prefix)) {
5154
ret[key.substring(prefix.length)] = items[key];
5255
}
5356
});
54-
resolve(ret);
57+
return resolve(ret);
5558
});
5659
});
5760
}

src/runtime/background/utils.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,17 @@ export function listenerWebRequest(headerFlag: string) {
175175
chrome.webRequest.onHeadersReceived.addListener(
176176
(details) => {
177177
if (!isExtensionRequest(details)) {
178-
// 判断是否为页面请求
179-
if (
180-
!(details.type === "main_frame" || details.type === "sub_frame") ||
181-
!isFirefox()
182-
) {
178+
// 只对firefox进行处理
179+
if (!isFirefox()) {
183180
return {};
184181
}
182+
// 判断是否为页面请求
183+
if (!(details.type === "main_frame" || details.type === "sub_frame")) {
184+
// 处理service worker的情况
185+
if (!(details.type === "xmlhttprequest" && details.tabId === -1)) {
186+
return {};
187+
}
188+
}
185189
// 判断页面上是否有脚本会运行,如果有判断是否有csp,有则移除csp策略
186190
const runtime = IoC.instance(Runtime) as Runtime;
187191
// 这块代码与runtime里的pageLoad一样,考虑后面要不要优化
@@ -197,16 +201,17 @@ export function listenerWebRequest(headerFlag: string) {
197201
});
198202
if (result.length > 0 && details.responseHeaders) {
199203
// 移除csp
204+
const newResponseHeaders: chrome.webRequest.HttpHeader[] = [];
200205
for (let i = 0; i < details.responseHeaders.length; i += 1) {
201206
if (
202-
details.responseHeaders[i].name.toLowerCase() ===
207+
details.responseHeaders[i].name.toLowerCase() !==
203208
"content-security-policy"
204209
) {
205-
details.responseHeaders[i].value = "";
210+
newResponseHeaders.push(details.responseHeaders[i]);
206211
}
207212
}
208213
return {
209-
responseHeaders: details.responseHeaders,
214+
responseHeaders: newResponseHeaders,
210215
};
211216
}
212217
return {};

0 commit comments

Comments
 (0)