1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】API Gateway × ECS(Spring Boot) × プロキシ統合構成でのCORS対応まとめ

Posted at

【AWS】API Gateway × Spring Boot × ECS × 統合プロキシ構成でのCORS対応メモ

🎯 対象読者

  • API Gateway のバックエンドが ECS 上の Spring Boot
  • 統合プロキシ(HTTP Proxy Integration) を使っている
  • フロントエンドからの クロスオリジン通信(CORS) を許可したい
  • API Gateway 側の CORS 設定でハマった人

🏗 構成概要

要素 内容
呼び出し API Gateway(REST API)
バックエンド ECS(Fargate)+ Spring Boot

💡 結論:Spring Boot 側で CORS 許可すれば OK

統合プロキシ(proxy integration)が有効な場合、API Gateway はリクエストをそのままバックエンドに流すだけ。

👉 CORS の制御はすべて Spring Boot 側で行う。API Gateway 側の設定は不要


🛠 Spring Boot 側の CORS設定方法(Spring Security なしの場合)

@Configuration を使って CORS をグローバルに許可します。

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**") // すべてのエンドポイントに適用
                .allowedOrigins("*") // 任意のオリジンを許可(必要に応じて絞って)
                .allowedMethods("GET", "POST") // 必要なメソッドのみ許可
                .allowedHeaders("*")
                .allowCredentials(true)
                .maxAge(3600); // プリフライト応答のキャッシュ時間(秒)
    }
}

OPTIONS メソッドのハンドリングはどうなる?

CORSでPOSTメソッドなどを実行する場合、前段にプリフライトリクエスト(これがOPTION)が実行される。
上記の CORS 設定をすると、Spring Boot は自動で OPTIONS リクエスト(プリフライト)に対応してくれます。

特にハンドラやコントローラで OPTIONS を明示的に処理する必要はありません。


✅ API Gateway 側の設定

✅ 必要なこと

  • 統合リクエスト → プロキシ統合を有効化(Use Proxy Integration = true)

❌ 不要なこと

  • リソースごとの CORS 設定(OPTIONS メソッドの定義)
  • レスポンスヘッダーのマッピング

📝 まとめ

項目 対応内容
CORS 設定の場所 Spring Boot 側で完結
OPTIONS メソッドの対応 Spring Boot が自動で処理
Spring Securityの有無 今回は なし の例(必要なら別途対応)

📝 余談:Spring BootのCORS処理の仕組み

Spring Boot(正確にはSpring MVC)は、WebMvcConfigurerで設定したCORSマッピングを元に、リクエストのプリフライト(OPTIONS)に自動対応します。

  • フロントエンドから送られてくるプリフライトリクエスト(OPTIONS)に対し、
  • Springは内部的に自動で必要なCORSレスポンスヘッダー(Access-Control-Allow-Originなど)を付与し、
  • これによりブラウザはリクエストを許可してくれます。

この仕組みがあるため、明示的にコントローラーでOPTIONSメソッドの処理を実装する必要はありません。


処理の流れイメージ

  1. ブラウザからクロスオリジンのAPI呼び出しが来る
  2. 事前にプリフライトリクエスト(OPTIONS)を送る
  3. Springが WebMvcConfigurer の設定に基づきCORSヘッダーを付与して応答
  4. ブラウザが応答を受けて本リクエスト(GETやPOST)を送る
  5. Springは本リクエストにもCORSヘッダーを付与して返す

ポイント

  • Spring Securityを使っている場合は、セキュリティフィルターでCORS設定が必要になることもある
  • 使っていなければ、WebMvcConfigurerの設定だけでCORSが完結する
  • allowCredentials(true) を設定すると、クッキーや認証情報を含むリクエストも許可できる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?