SpringMVCインターセプタInterceptorはcorsを越えて失効し、Headerが取得できない
5694 ワード
起因:
ブロックでheaderを取得するAuthorizationは空ですが、postmanは正常なフロントエンドでドメイン間エラーを報告し、controllerに@CrossOriginが構成されています.
プロジェクトは前後の分離を採用し、サーバー側はグローバルなドメイン間構成を追加したが、ドメイン間問題が発生し、複数回の要求を分析したところ、一部の要求がドメイン間ではなく、ドメイン間ではない要求がちょうどブロッカーの放行のアドレスであることが分かったので、分析は権限ブロッカー処理がドメイン間処理の前に行われ、ドメイン間構成が失効した可能性がある.
フィルタCorsFilterを使用してドメイン間を構成します.Filterの位置はInterceptorの前にあるため、問題は解決されました.
String authorization = request.getHeader("Authorization");
ブロックでheaderを取得するAuthorizationは空ですが、postmanは正常なフロントエンドでドメイン間エラーを報告し、controllerに@CrossOriginが構成されています.
プロジェクトは前後の分離を採用し、サーバー側はグローバルなドメイン間構成を追加したが、ドメイン間問題が発生し、複数回の要求を分析したところ、一部の要求がドメイン間ではなく、ドメイン間ではない要求がちょうどブロッカーの放行のアドレスであることが分かったので、分析は権限ブロッカー処理がドメイン間処理の前に行われ、ドメイン間構成が失効した可能性がある.
フィルタCorsFilterを使用してドメイン間を構成します.Filterの位置はInterceptorの前にあるため、問題は解決されました.
@Configuration
public class SystemConfig implements WebMvcConfigurer {
@Autowired
private JwtInterceptor jwtInterceptor;
/**
*
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(jwtInterceptor)
// url
.addPathPatterns("/**")
.excludePathPatterns("/sys/login","/frame/register/**");
}
/**
*
* CorsFilter , Filter Interceptor , :
*/
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
//
config.addAllowedOrigin("*");
//
// config.setAllowCredentials(true);
//
config.addAllowedMethod("*");
//
config.addAllowedHeader("*");
config.addExposedHeader("token");
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return new CorsFilter(configSource);
}
}