springboot拦截请求路径_SpringBoot 2.x 版本处理拦截器导致的静态资源被拦截问题...

过滤静态资源

springboot1.x和2.x拦截器中静态资源访问的区别

1.x的 resources/static 目录下的静态资源可以直接访问,当有配置自定义 HandlerInterceptor 拦截器时,请求静态资源路径不会被拦截 。

2.x的如果自定义 HandlerInterceptor 拦截器时访问静态资源就会被同步拦截,导致页面中访问这些静态资源出现 404。

解决方案

以下是 SpringBoot 2.x 以上的版本,1.x 的会自动处理。

第一种,不要过滤全部请求,也就是不要直接填写 /**

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new LoginInterceptor())

.addPathPatterns("/main","/admin/**");

}

不过,这种方式比较繁琐,整个网站有很多链接都需要手动一一拦截,好处就是静态资源不会被拦截,仅此而已。

第二种,将静态资源放在同一目录下,然后排除该目录;

@Override

public void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new LoginInterceptor())

.addPathPatterns("/**")

.excludePathPatterns("/static/**","/webjars/**");

}

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");

}

这种方式,所有请求都会被拦截,除了排除过滤的链接之外。缺点,SpringBoot 对静态资源的默认配置也会被拦截。

webjars 是依赖方式的目录,所以这个可以一同排除。

后面的代码一定要添加,否则 SpringBoot 默认自动配置会对 static 目录进行处理。添加了后面的代码映射之后,就无需在配置文件中配置:spring.mvc.static-path-pattern

Q.E.D.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值