Springbootでクロスオリジンを解決する方法
Spring BootでCORSを設定する方法には、以下のようなものがあります。
- Controllerクラスやメソッドに@CrossOriginアノテーションを使用して、クロスオリジンアクセスを設定できます。originsプロパティを使用して許可されるドメインを指定できます。methodsプロパティを使用してサポートされているHTTPメソッドを指定できます。maxAgeプロパティを使用して、レスポンスの最大の有効期間(単位は秒)を指定できます。
- 非同期通信で、http://example.comのアクセスを許可し、GET, POSTメソッドで操作できるようにするコントローラークラス
- WebMvcConfigurerを利用:WebMvcConfigurerインターフェースを実装し、addCorsMappingsメソッドをオーバーライドしてグローバルなCORSアクセスを設定する。addMappingメソッドを使用してアクセスを許可するパスを指定し、allowedOriginsメソッドを使用してアクセスを許可するドメインを指定し、allowedMethodsメソッドを使用してサポートするHTTPメソッドを指定し、maxAgeメソッドを使用して応答の最大生存時間を秒で指定することができる。
- クラス `CorsConfig` は `WebMvcConfigurer` インターフェースを実装した `@Configuration` クラスです。`addCorsMappings` メソッドをオーバーライドし、`CorsRegistry` にマッピングを追加します。マッピングにはパス `/api/**` が指定され、オリジン `http://example.com`、メソッド `GET` と `POST` が許可され、マッピングの有効期間は 3600 秒です。
- Filterを利用:独自のFilterを作成してクロスドメインのリクエストを処理し、対応するAccess-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Max-Ageレスポンスヘッダーを設定する。
- `@Component`
`public class CorsFilter implements Filter {`
`@Override`
`public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {`
`HttpServletResponse response = (HttpServletResponse) res;`
`response.setHeader(“Access-Control-Allow-Origin”, “http://example.com”);`
`response.setHeader(“Access-Control-Allow-Methods”, “GET, POST”);`
`response.setHeader(“Access-Control-Max-Age”, “3600”);`
`chain.doFilter(req, res);`
}`
}`
Spring Bootを設定してクロスオリジンを許可する方法は上記のとおりで、実務上のニーズに応じて適切な方法を選択して設定を行ってください。