java跨域配置CorsFilter不生效原因分析及解决
更新时间:2026年06月14日 10:00:23 作者:七濑武
这篇文章主要介绍了java跨域配置CorsFilter不生效原因分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
java跨域配置CorsFilter不生效
项目中有多个Filter时
需要通过 @Order(Ordered.HIGHEST_PRECEDENCE) 注解设置过滤器的执行顺序:
order的规则
- 1. order的值越小,优先级越高
- 2. order如果不标注数字,默认最低优先级,因为其默认值是int最大值
- 3. 该注解等同于实现Ordered接口getOrder方法,并返回数字。
如果使用如下.注释掉的方法进行设置跨域,Filter的doFilter()方法中直接return出去时,前端会提示跨域
这个CorsConfig并没有实现Filter接口
即使加上 @Order 注解也不会生效,需要通过如下新的方式返回一个新的FilterRegistrationBean出去,并设置order
import com.nanase.takeshi.constants.JwtConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/**
* CorsConfig
* 跨域请求配置
*
* @author 725
* @date 2020/12/10 18:17
*/
@Slf4j
@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 1 设置访问源地址
corsConfiguration.addAllowedOrigin("*");
// 2 设置访问源请求头
corsConfiguration.addAllowedHeader("*");
// 3 设置访问源请求方法
corsConfiguration.addAllowedMethod("*");
// 4 暴露哪些头部信息
corsConfiguration.addExposedHeader(JwtConstant.HEADER);
return corsConfiguration;
}
/**
@Bean
public CorsFilter corsFilter() {
log.info("跨域设置。。。。");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 对接口配置跨域设置
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
*/
@Bean
public FilterRegistrationBean<CorsFilter> corsFilter() {
log.info("跨域设置。。。。");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 5 对接口配置跨域设置
source.registerCorsConfiguration("/**", buildConfig());
//有多个filter时此处设置改CorsFilter的优先执行顺序
FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
springsecurity中http.permitall与web.ignoring的区别说明
这篇文章主要介绍了springsecurity中http.permitall与web.ignoring的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
springboot中spring.profiles.include的妙用分享
这篇文章主要介绍了springboot中spring.profiles.include的妙用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-08-08
@Resource和@Autowired两个注解的区别及说明
这篇文章主要介绍了@Resource和@Autowired两个注解的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-06-06


最新评论