いくつかのエンドポイントを公開している Springboot バックエンドがあります。
フロントエンドからこれにアクセスする必要があります。私がそうしたとき、私は言うエラーを得ましたInvalid CORS request
。けっこうだ。このドキュメント
に記載されているように、バックエンドでクロスオリジンリクエストをグローバルに有効にしました。以下のコードスニペット
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(final CorsRegistry registry) {
registry.addMapping("*").allowedOrigins("My-frontend-Host-url");
}
}
しかし、何らかの理由で、これは機能しません。同じエラーが発生します。CorsFilter
しかし、私は以下のように 使用してこれを機能させることができました
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("My-frontend-Host-url");
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
}
では、これら 2 つのアプローチの正確な違いは何であり、最初のケースで機能しないのはなぜですか。何か案は?