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

Vaadin 23.0.9升级至23.1.0后sw.js导致路由拦截REST请求问题

结论

这是Vaadin 23.1.0版本引入的已确认回归Bug,并非Servlet映射配置错误。

根因
  • 23.1.0版本修改了默认生成的sw.js(Service Worker脚本)的请求拦截逻辑:23.0.9旧版本默认仅拦截Vaadin Router负责的前端导航请求,会自动透传匹配其他后端Servlet的路径;23.1.0版本默认拦截全站所有导航类请求,未自动排除非Vaadin处理的后端API路径。
  • 请求拦截发生在浏览器侧:sw.js安装激活后,会把匹配到的/rest/v1/*请求直接转发给Vaadin前端路由处理,根本不会发送到后端走Servlet映射匹配流程,这也是手动注销sw.js后请求立刻恢复正常的原因。
修复方案
  • 临时方案1:保留PWA能力的前提下,自定义Service Worker配置,在配置中添加拦截排除规则,将/rest/v1/*路径加入navigateFallbackDenylist列表,示例配置片段:
// 自定义sw配置中的导航拦截排除规则
navigateFallbackDenylist: [/^\/rest\/v1\//]
  • 临时方案2:如果不需要PWA离线功能,直接移除应用启动类/主布局类上的@PWA注解,框架将不再自动生成、注册sw.js,拦截问题会直接消失。
  • 永久方案:升级到Vaadin 23.1.1及更高的23.1分支补丁版本,官方已经修复该默认规则问题,新版本会自动识别已注册的其他Servlet映射路径,默认排除API类路径不会被Service Worker拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:31:00