You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

桌面Firefox使用service-worker.js缓存时User-Agent异常问题

Firefox桌面端Service Worker请求异常User-Agent问题排查与解决

问题现象

  • 桌面版Firefox正常User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
  • 启用Service Worker缓存文件时,服务器端检测到的User-Agent为:Mozilla/5.0 (Android 4.4; Mobile; rv:109.0) Gecko/109.0 Firefox/109.0

关键注意点

  • 问题发生在正常桌面端网页浏览场景下
  • 开发者控制台的网络流量显示User-Agent正常,但服务器端检测结果为移动浏览器
  • 使用Ctrl+F5强制刷新页面时,会一次性发送正确的User-Agent

所用Service Worker代码

let version;
version = 4;

// This is the service worker with the combined offline experience (Offline page + Offline copy of pages)

const CACHE = "system-v"+version;

importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');

// TODO: replace the following with the correct offline fallback page i.e.: const offlineFallbackPage = "offline.html";
const offlineFallbackPage = "pwa-offline/?v="+version;

self.addEventListener("message", (event) => {
    if (event.data && event.data.type === "SKIP_WAITING") {
        self.skipWaiting();
    }
});

self.addEventListener('install', async (event) => {
    event.waitUntil(
        caches.open(CACHE)
            .then((cache) => cache.add(offlineFallbackPage))
    );
});

if (workbox.navigationPreload.isSupported()) {
    workbox.navigationPreload.enable();
}

workbox.routing.registerRoute(
    new RegExp('/*\.(js|css|jpe?g|png|gif|webp|svg|ico)'),
    new workbox.strategies.StaleWhileRevalidate({
        cacheName: CACHE
    })
);

self.addEventListener('fetch', (event) => {
    if (event.request.mode === 'navigate') {
        event.respondWith((async () => {
            try {
                const preloadResp = await event.preloadResponse;
                
                if (preloadResp) {
                    return preloadResp;
                }
                
                const networkResp = await fetch(event.request);
                return networkResp;
            } catch (error) {
                
                const cache = await caches.open(CACHE);
                const cachedResp = await cache.match(offlineFallbackPage);
                return cachedResp;
            }
        })());
    }
});

问题成因与解决方法

成因

问题并非Service Worker代码本身导致,而是由Firefox官方扩展Side View引发——该扩展在Service Worker发起请求时会注入异常的移动设备User-Agent。

解决方法

禁用或卸载Side View扩展即可恢复正常的User-Agent发送逻辑。


内容的提问来源于stack exchange,提问作者Muhammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 08:25:10