Java 静态资源是安全的,在迁移到Spring Boot 2.0后无法访问
我已经将SpringBootWeb应用程序从1.5.10迁移到2.0.0,它与Heroku一起部署,并在多个域上运行。对于主域,这是第一个被设置的域,所有的工作都很顺利,但是对于其余的任何静态资源;像Javascript、CSS一样,图像和图标(webjar)是不可访问的Java 静态资源是安全的,在迁移到Spring Boot 2.0后无法访问,java,spring-boot,spring-security,Java,Spring Boot,Spring Security,我已经将SpringBootWeb应用程序从1.5.10迁移到2.0.0,它与Heroku一起部署,并在多个域上运行。对于主域,这是第一个被设置的域,所有的工作都很顺利,但是对于其余的任何静态资源;像Javascript、CSS一样,图像和图标(webjar)是不可访问的 maindomain.com/js/example.js工作正常,可以通过浏览器直接访问secondarydomain.com/js/example.js无法被浏览器访问,运行应用程序时会出现此错误,我猜是因为.js文件返回的
maindomain.com/js/example.js
工作正常,可以通过浏览器直接访问secondarydomain.com/js/example.js
无法被浏览器访问,运行应用程序时会出现此错误,我猜是因为.js文件返回的不是文本消息,而是文本消息:
拒绝从“”执行脚本,因为其MIME类型('text/html')不可执行,并且启用了严格的MIME类型检查
静态资源位于:
/resources/static/css
/resources/static/js
/resources/static/images
我已使用WebSecurityConfigureAdapter的扩展设置了Spring安全配置,其中我已撤销了@EnableWebSecurity注释,并添加了此代码,旨在确保这些资源可以访问,但不会成功:
http
.authorizeRequests()
.requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
有一个HandleInterceptor,它处理每个辅助域可访问的目录。主要的一个,可以访问整个应用程序。
在另一个问题中,使用不同的方法处理同一个问题,有一个HandleInterceptor的摘录
带引导的Spring Security在类路径上,默认情况下,自动配置保护所有端点 然而,当涉及到复杂的应用程序时,每个端点需要不同的安全策略。我们还需要配置哪些端点应该是安全的,哪些类型的用户应该能够访问端点,哪些端点应该是公共的
WebSecurity
允许我们配置添加Spring安全性应该忽略的RequestMatcher实例
HttpSecurity
允许我们可以配置应该安全的端点和应该公开的端点
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring()
.antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/css/**", "/js/**", "/image/**"").permitAll()
}
}
希望能有所帮助。不鼓励只使用代码的答案。请点击并添加一些文字,总结您的代码如何解决问题。Thanks@Nick谢谢通知,我已经添加了详细的解释。