This commit is contained in:
2025-07-21 20:10:44 +09:00
parent 2001be4424
commit 74c95e04fd
9 changed files with 378 additions and 126 deletions
@@ -1,40 +1,65 @@
browser.webRequest.onHeadersReceived.addListener(
function(details) {
let headers = details.responseHeaders || [];
// Cache-Control 헤더가 없거나 no-store, no-cache 등일 때 수정
let found = false;
for (let header of headers) {
if (header.name.toLowerCase() === "cache-control") {
header.value = "public, max-age=31536000"; // 1년 캐시
found = true;
}
}
if (!found) {
headers.push({name: "Cache-Control", value: "public, max-age=31536000"});
}
return {responseHeaders: headers};
},
{urls: ["*://*/*.gif"], types: ["image"]},
["blocking", "responseHeaders"]
);
//const originalLog = console.log;
//console.log = function(...args) {
// // 메시지 가공 또는 네이티브로 전달
// originalLog.apply(console, args);
// browser.runtime.sendNativeMessage("browser", args);
//};
browser.webRequest.onBeforeRequest.addListener(
function(details) {
return { cancel: true };
},
{ urls: ["*://*/*.gif"], types: ["image"] },
["blocking"]
);
//window.addEventListener('error', function(event) {
// if (event.message && event.message.includes('No impl for message: MozAfterPaint')) {
// // 앱으로 오류 신호 전달
// browser.runtime.sendMessage({ type: 'RELOAD_REQUEST' });
//const port = browser.runtime.connectNative("browser");
//// 모든 요청을 가로챔
//browser.webRequest.onCompleted.addListener(async (details) => {
// // 원래 요청 URL
// const url = details.url;
// try {
// // 실제 데이터 fetch (credentials, 쿠키 등 필요시 옵션 맞춤)
// const res = await fetch(url, {credentials: "include"});
// const blob = await res.blob();
// // 데이터 -> ArrayBuffer
// const arrayBuffer = await blob.arrayBuffer();
// // base64로 변환
// const base64 = btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)));
// // 네이티브 앱에게 전달
// port.postMessage(JSON.stringify({type:"CACAHE",msg:msg , url: url, data: base64}));
//// browser.runtime.sendNativeMessage(
//// "browser", // 등록한 네이티브 앱 id
//// { url: url, data: base64 }
//// );
// } catch(e) {
// // 에러 처리
// console.error(e);
// }
//});
//}, {urls: ["<all_urls>"]});
//
////
////browser.webRequest.onHeadersReceived.addListener(
//// function(details) {
//// let headers = details.responseHeaders || [];
//// // Cache-Control 헤더가 없거나 no-store, no-cache 등일 때 수정
//// let found = false;
//// for (let header of headers) {
//// if (header.name.toLowerCase() === "cache-control") {
//// header.value = "public, max-age=31536000"; // 1년 캐시
//// found = true;
//// }
//// }
//// if (!found) {
//// headers.push({name: "Cache-Control", value: "public, max-age=31536000"});
//// }
//// return {responseHeaders: headers};
//// },
//// {urls: ["*://*/*.gif"], types: ["image"]},
//// ["blocking", "responseHeaders"]
////);
//////const originalLog = console.log;
//////console.log = function(...args) {
////// // 메시지 가공 또는 네이티브로 전달
////// originalLog.apply(console, args);
////// browser.runtime.sendNativeMessage("browser", args);
//////};
////
////browser.webRequest.onBeforeRequest.addListener(
//// function(details) {
//// return { cancel: true };
//// },
//// { urls: ["*://*/*.gif"], types: ["image"] },
//// ["blocking"]
////);
////window.addEventListener('error', function(event) {
//// if (event.message && event.message.includes('No impl for message: MozAfterPaint')) {
//// // 앱으로 오류 신호 전달
//// browser.runtime.sendMessage({ type: 'RELOAD_REQUEST' });
//// }
////});
@@ -22,7 +22,6 @@
"nativeMessagingFromContent",
"geckoViewAddons",
"webRequest",
"webRequestBlocking",
"*://*/*.gif"
"webRequestBlocking"
]
}