Skip to content

Commit 757fe2c

Browse files
committed
🐛 修复Firefox unsafeHeader拦截问题 #20
1 parent d9ee5c6 commit 757fe2c

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/apps/grant/background.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ export class BackgroundGrant {
7676
send(this.rand);
7777
});
7878
try {
79+
const reqOpt = ['blocking', 'requestHeaders'];
80+
const respOpt = ['blocking', 'responseHeaders'];
81+
if (!isFirefox()) {
82+
reqOpt.push('extraHeaders');
83+
respOpt.push('extraHeaders');
84+
}
7985
chrome.webRequest.onBeforeSendHeaders.addListener((data) => {
8086
let setCookie = '';
8187
let cookie = '';
@@ -158,10 +164,11 @@ export class BackgroundGrant {
158164
}
159165
}, {
160166
urls: ['<all_urls>'],
161-
}, ['blocking', 'requestHeaders', 'extraHeaders']);
167+
}, reqOpt);
162168
const responseHeader: { [key: string]: boolean } = { 'set-cookie': true };
163-
chrome.webRequest.onHeadersReceived.addListener((details) => {
164-
if (details.initiator && chrome.extension.getURL('').startsWith(details.initiator)) {
169+
chrome.webRequest.onHeadersReceived.addListener((details: chrome.webRequest.WebResponseHeadersDetails & { originUrl?: string }) => {
170+
if ((details.initiator && chrome.extension.getURL('').startsWith(details.initiator)) ||
171+
(details.originUrl && details.originUrl.startsWith(chrome.extension.getURL('')))) {
165172
details.responseHeaders?.forEach(val => {
166173
if (responseHeader[val.name]) {
167174
details.responseHeaders?.push({
@@ -177,8 +184,9 @@ export class BackgroundGrant {
177184
}
178185
}, {
179186
urls: ['<all_urls>'],
180-
}, ['blocking', 'responseHeaders', 'extraHeaders']);
187+
}, respOpt);
181188
} catch (e) {
189+
console.log(e);
182190
}
183191
}
184192

@@ -223,8 +231,6 @@ export class BackgroundGrant {
223231
// TODO: 使用map优化效率
224232
if (!permission.default) {
225233
let flag = false;
226-
console.log(metaGrant);
227-
console.log(propertyName);
228234
for (let i = 0; i < metaGrant.length; i++) {
229235
if (metaGrant[i] == propertyName || metaGrant[i].replace('.', '_') == propertyName) {
230236
flag = true;

0 commit comments

Comments
 (0)