diff --git a/public/service-worker.js b/public/service-worker.js index 6dd051da..fc57830e 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -58,12 +58,35 @@ self.addEventListener('notificationclose', (event) => { // Fetch 事件 - 基础的网络优先策略 self.addEventListener('fetch', (event) => { + // 只处理同源请求,跳过跨域请求 + if (!event.request.url.startsWith(self.location.origin)) { + return; + } + + // 只处理 GET 请求 + if (event.request.method !== 'GET') { + return; + } + // 对于通知相关的资源,使用网络优先策略 event.respondWith( fetch(event.request) .catch(() => { // 网络失败时,尝试从缓存获取 - return caches.match(event.request); + return caches.match(event.request) + .then(response => { + // 如果缓存也没有,返回一个基本的网络错误响应 + if (!response) { + return new Response('Network error', { + status: 408, + statusText: 'Request Timeout', + headers: new Headers({ + 'Content-Type': 'text/plain' + }) + }); + } + return response; + }); }) ); });