Skip to content

Commit f1d2c4e

Browse files
committed
demo code
1 parent 5554107 commit f1d2c4e

2 files changed

Lines changed: 33 additions & 26 deletions

File tree

src/app/service/service_worker/script.ts

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import { getSimilarityScore, ScriptUpdateCheck } from "./script_update_check";
4747
import { LocalStorageDAO } from "@App/app/repo/localStorage";
4848
import { CompiledResourceDAO } from "@App/app/repo/resource";
4949
import { initRegularUpdateCheck } from "./regular_updatecheck";
50+
import { createNoCSPRules } from "@App/pkg/utils/dnr";
5051

5152
export type TCheckScriptUpdateOption = Partial<
5253
{ checkType: "user"; noUpdateCheck?: number } | ({ checkType: "system" } & Record<string, any>)
@@ -316,32 +317,7 @@ export class ScriptService {
316317

317318
{
318319
type Config = Record<string, any>;
319-
const REMOVE_HEADERS = [
320-
`content-security-policy`,
321-
`content-security-policy-report-only`,
322-
`x-webkit-csp`,
323-
`x-content-security-policy`,
324-
`x-frame-options`,
325-
];
326-
327-
const { RuleActionType, HeaderOperation, ResourceType } = chrome.declarativeNetRequest;
328-
329-
const rules: chrome.declarativeNetRequest.Rule[] = [
330-
{
331-
id: 2001,
332-
action: {
333-
type: RuleActionType.MODIFY_HEADERS,
334-
responseHeaders: REMOVE_HEADERS.map((header) => ({
335-
operation: HeaderOperation.REMOVE,
336-
header,
337-
})),
338-
},
339-
condition: {
340-
urlFilter: `|http*`,
341-
resourceTypes: [ResourceType.MAIN_FRAME, ResourceType.SUB_FRAME],
342-
},
343-
},
344-
];
320+
const rules = createNoCSPRules([`|http*`]);
345321

346322
const updateRules = (newConfig: Config, oldConfig?: Config) => {
347323
if (oldConfig && newConfig.csp_http_disabled === oldConfig?.csp_http_disabled) {

src/pkg/utils/dnr.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,34 @@ export const convertDomainToDNRUrlFilter = (text: string) => {
4444
}
4545
return ret;
4646
};
47+
48+
export const createNoCSPRules = (urlFilters: string[]) => {
49+
const REMOVE_HEADERS = [
50+
`content-security-policy`,
51+
`content-security-policy-report-only`,
52+
`x-webkit-csp`,
53+
`x-content-security-policy`,
54+
`x-frame-options`,
55+
];
56+
const { RuleActionType, HeaderOperation, ResourceType } = chrome.declarativeNetRequest;
57+
if (urlFilters.length > 512) {
58+
throw new Error(`Too many URL patterns (${urlFilters.length}). Max is 512.`);
59+
}
60+
const rules: chrome.declarativeNetRequest.Rule[] = urlFilters.map((urlFilter, index) => {
61+
return {
62+
id: 2001 + index,
63+
action: {
64+
type: RuleActionType.MODIFY_HEADERS,
65+
responseHeaders: REMOVE_HEADERS.map((header) => ({
66+
operation: HeaderOperation.REMOVE,
67+
header,
68+
})),
69+
},
70+
condition: {
71+
urlFilter: urlFilter,
72+
resourceTypes: [ResourceType.MAIN_FRAME, ResourceType.SUB_FRAME],
73+
},
74+
} satisfies chrome.declarativeNetRequest.Rule;
75+
});
76+
return rules;
77+
};

0 commit comments

Comments
 (0)