java springでCorsFilterを使ったCORS設定

java springBootで、CORSの設定方法を紹介します。

javaでは主に3つほどやり方があります。

  • @CrossOriginを使ってメソッドごとに設定する方法

  • WebMvcConfigurerAdapterを継承したconfigクラスで設定する方法

  • CorsFilterを用いて、設定する方法

があります。

ここでは、三つ目のCorsFilterを用いたCORSを有効にする設定を紹介します。


Configクラス
@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
       
        CorsConfiguration config = new CorsConfiguration();
        //CORSリクエストを許可するドメイン
        config.setAllowedOrigins(new ArrayList<>(Arrays.asList(
                "https://aaa.com",
                "https://www.aaa.com",
                "http://localhost:9000",
                "http://aaa-dev.s3-website-ap-northeast-1.amazonaws.com"
                )));
        //クッキー情報を送信するかどうか
        config.setAllowCredentials(true);
        //CORSリクエストを許可するHTTPメソッド
        config.addAllowedMethod("*");
        //CORSリクエストで受信を許可するヘッダー情報
        config.addAllowedHeader("*");


        //CORSリクエストを許可するURLの形式(特に決まりがなければ「/**」でもOK)
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);

        return new CorsFilter(configSource);
    }
}

CORSリクエストを許可するURLは、/aaa/**、といったようにあるパス以下全てを許可することも出来ます。


他の方法も含めて、springのドキュメントにあるのでぜひ参考にしてみてください。

CORS support in Spring Framework