Spring Boot登录后Chrome出现GET /sw.js不匹配POST /login错误
问题原因
sw.js是PWA(渐进式网页应用)的Service Worker脚本,Chrome浏览器如果之前在当前域名下注册过Service Worker,会自动发起GET /sw.js请求更新脚本,而你当前的Spring Security配置没有将该路径加入免认证规则,请求被拦截后触发错误跳转,才会出现路径匹配错误的日志。Firefox没有对应Service Worker的注册记录,不会主动发起该请求,所以运行正常。
修复方案
方案1:不需要PWA功能
直接清理Chrome浏览器的残留配置即可:
- 打开Chrome访问当前站点,按F12打开开发者工具
- 切换到「Application」标签,左侧找到「Service Workers」
- 删除当前域名下注册的Service Worker,同时清理站点缓存后重新测试即可。
方案2:需要保留PWA功能
两步修改:
- 修改Spring Security配置类,将
sw.js和workbox相关静态资源加入免认证路径:
@Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() // 新增sw.js和workbox相关资源的免认证规则 .antMatchers("/css/**", "/js/**", "/images/**", "/sw.js", "/workbox-*.js").permitAll() .anyRequest().fullyAuthenticated() .and() .formLogin() .loginPage("/login") //自定义登录页 .permitAll(); // 允许所有用户访问/login页面 }
- 将对应的
sw.js和workbox-*.js文件放入项目静态资源目录(默认是src/main/resources/static),保证静态资源可正常访问即可。
内容的提问来源于stack exchange,提问作者Anuska
相关产品推荐
相关产品推荐

