文章目录
Spring boot 2.0 升级到 3.3.1 的相关问题 (八)
flyway 不支持mysql 5.7 问题
flyway 版本: 10.10.0
问题描述
异常描述
Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Unsupported Database: MySQL 5.7
问题解决
降低flyway 版本到7.15.0
引入新的依赖flyway-mysql
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-mysql</artifactId>
<version>${flyway.version}</version>
</dependency>
跨域问题变动
问题描述
收到跨域请求是时候会出现警告
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.
at org.springframework.web.cors.CorsConfiguration.validateAllowCredentials(CorsConfiguration.java:572) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.springframework.web.cors.CorsConfiguration.checkOrigin(CorsConfiguration.java:699) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.springframework.web.cors.DefaultCorsProcessor.checkOrigin(DefaultCorsProcessor.java:190) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.springframework.web.cors.DefaultCorsProcessor.handleInternal(DefaultCorsProcessor.java:127) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.springframework.web.cors.DefaultCorsProcessor.processRequest(DefaultCorsProcessor.java:106) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:87) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.25.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.25.jar!/:?]
at com.abc.springboot.frame.filter.ContentCachingRequestFilter.doFilterInternal(ContentCachingRequestFilter.java:70) ~[java-abc-spring-boot-frame-2.0-SNAPSHOT.jar!/:?]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.1.10.jar!/:6.1.10]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.25.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.25.jar!/:?]
at com.alibaba.druid.support.jakarta.WebStatFilter.doFilter(WebStatFilter.java:113) ~[druid-1.2.23.jar!/:?]
解决方案
修改跨域的配置,修改addAllowedOrigin("*");
的调用为addAllowedOriginPattern("*");
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
//corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedOriginPattern("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addExposedHeader(HTTP_HEADER_AUTHORIZATION);
corsConfiguration.setAllowCredentials(true);
corsConfiguration.setMaxAge(60*60L);
return corsConfiguration;
}
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}