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

Nuxt PWA的Service Worker仅localhost可注册,局域网IP访问无法注册

Nuxt PWA Service Worker局域网IP访问注册失败解决办法

根本原因

现代浏览器对Service Worker的运行有严格的安全上下文限制,仅允许在本地回环地址(localhost/127.0.0.1)或者HTTPS协议站点下注册运行。你通过局域网IP192.168.0.2访问时走的是普通HTTP协议,不符合安全要求,因此触发报错。
你当前提供的manifest.json、sw.js、nuxt.config.js的PWA相关配置均无问题,scope和start_url均为根路径,和服务路径匹配。注意你nuxt.config.js中配置的服务端口为8000,若无额外端口转发配置,访问地址应为192.168.0.2:8000,注意端口匹配。

开发环境解决方案

方案1:临时放行指定不安全站点

  1. 打开Chrome浏览器,地址栏输入chrome://flags/#unsafely-treat-insecure-origin-as-secure回车访问
  2. 找到Insecure origins treated as secure选项,选择Enabled,在下方输入框填入你需要放行的地址,比如http://192.168.0.2:8000
  3. 按照提示重启浏览器,再次访问即可正常注册Service Worker

方案2:本地启用HTTPS服务

使用openssl生成自签名证书,在nuxt.config.js中配置HTTPS服务:

// nuxt.config.js 新增https配置,注意提前引入fs和path模块
import fs from 'fs'
import path from 'path'

export default {
  // 其他配置保持不变
  server: {
    host: '0.0.0.0',
    port: 8000,
    https: {
      key: fs.readFileSync(path.resolve(__dirname, '你的证书key文件路径/server.key')),
      cert: fs.readFileSync(path.resolve(__dirname, '你的证书crt文件路径/server.crt'))
    }
  }
}

配置完成后重启服务,使用https://192.168.0.2:8000访问即可符合安全要求。

生产环境解决方案

生产部署时必须为站点配置正式的HTTPS证书,可选择免费的Let's Encrypt证书或者云服务商提供的免费SSL证书,配置HTTPS访问后Service Worker即可正常注册运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:10