Friday, June 16, 2023

SpringBootでCORSの問題を解決する方法【初心者向け】

SpringBootアプリケーションでのCORS問題の原因と解決策

この記事では、SpringBootアプリケーションでのCORS(Cross-Origin Resource Sharing)の問題の原因と解決策について説明します。これは、ウェブ開発者がよく直面する課題です。

CORSとは何ですか?

CORS(Cross-Origin Resource Sharing)は、ウェブアプリケーション間でリソースを共有する技術です。ウェブブラウザは、セキュリティ上の理由からデフォルトでSame-Originポリシーに従っており、他のドメインからのリソース要求を制限しています。CORSは、ウェブページとサーバーがリソースを共有することを許可する標準です。

CORSの問題が発生する原因

ウェブアプリケーションがAjaxリクエストを使用して他のドメインのリソースを要求する場合、CORSが別途構成されていないと、ブラウザはSame-Originポリシーによりリクエストをブロックします。これにより、データが正常に受信できなくなり、CORSの問題が発生します。

SpringBootでCORSの問題を解決する方法

SpringBootでは、CORSを構成する2つの方法があります。一つはグローバル構成、もう一つは個々のコントローラーの構成です。

a. グローバル構成:

WebMvcConfigurerインターフェイスを実装し、addCorsMappings()メソッドを使用すると、すべてのコントローラーに対してCORSを構成できます。

@Configuration
public class WebConfig implements WebMvcConfigurer {
 @Override
 public void addCorsMappings(CorsRegistry registry) {
 registry.addMapping("/**") // すべてのリクエストにCORS構成を適用
 .allowedOrigins("*") // すべてのドメインを許可
 .allowedMethods("*") // すべてのHTTPメソッドを許可
 .allowedHeaders("*") // すべてのHTTPヘッダーを許可
 .allowCredentials(true); // クッキー処理を許可
 }
}

b. 個々のコントローラーの構成:

@ControllerAdviceおよび@CrossOriginアノテーションを使用して、個々のコントローラークラスまたはメソッドに対してCORSを構成できます。

@RestController
@CrossOrigin(origins = "*", methods = {RequestMethod.GET, RequestMethod.POST})
public class MyController {
 // コントローラーメソッドコードを記述
}

結論

SpringBootでは、さまざまなCORS構成方法を使用して、簡単にCORSの問題を解決できます。状況に応じて、適切な方法を使用してCORSを構成できます。


0 개의 댓글:

Post a Comment