我尝试了很多解决方案,堆栈溢出是我最后一个可以问我的问题的地方。我已经在后端创建了带有 Spring 启动的应用程序,该应用程序也为我的前端提供服务。我的主控制器如下所示
@Controller
public class HomeController {
@RequestMapping(value = "/*", method={RequestMethod.GET, RequestMethod.HEAD})
public String fallback() {
return "index";
}
}
这里有一些蚂蚁匹配者:
http.csrf().disable()
.authorizeRequests()
.antMatchers("/resources/**", "/built/**").permitAll()
.antMatchers("/css/**").permitAll()
.antMatchers(HttpMethod.POST, "/login").permitAll()
.antMatchers("/registration","/about","/garages/**/*").permitAll()
.antMatchers("/", "/home").permitAll()
当我试图达到时,一切都很完美
/注册,/关于或只是/
但是当我试图得到
/车库/5
我看到空白页面,在网络选项卡(在 mozilla 中(中,它显示捆绑包正在尝试从中获取
http://localhost:8080/garages/built/bundle.js 和状态 404
对于/about 页面,它如下所示:
http://localhost:8080/built/bundle.js(这是正确的(。
这里有人能够指出我经常以某种方式省略的任何问题,这些问题会导致我的正确重定向问题?
编辑如果您的静态资产位于resources/static
文件夹中,则此方法有效:
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**/*")
.addResourceLocations("classpath:/static/")
.resourceChain(true)
.addResolver(new PathResourceResolver() {
@Override
protected Resource getResource(String resourcePath, Resource location) throws IOException {
Resource requestedResource = location.createRelative(resourcePath);
return requestedResource.exists() && requestedResource.isReadable() ? requestedResource
: new ClassPathResource("/static/index.html");
}
});
}
}
解决方案信用和进一步说明:
https://stackoverflow.com/a/46854105