1

いくつかのエンドポイントを公開している 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 つのアプローチの正確な違いは何であり、最初のケースで機能しないのはなぜですか。何か案は?

4

1 に答える 1