Spring-boot-cors-support
Spring Boot-CORSサポート
Cross-Origin Resource Sharing(CORS)は、Webブラウザーに実装されたリソースを制限できるセキュリティ概念です。 異なるオリジンに対してリクエストを生成または消費するJavaScriptコードを防ぎます。
たとえば、Webアプリケーションが8080ポートで実行されており、JavaScriptを使用して9090ポートからRESTful Webサービスを使用しようとしています。 このような状況では、Webブラウザーでクロスオリジンリソース共有のセキュリティ問題に直面します。
この問題を処理するには2つの要件が必要です-
- RESTful Webサービスは、クロスオリジンリソース共有をサポートする必要があります。
- RESTful Webサービスアプリケーションは、8080ポートからAPIへのアクセスを許可する必要があります。
この章では、RESTful Webサービスアプリケーションのクロスオリジンリクエストを有効にする方法について詳しく学習します。
コントローラーメソッドでCORSを有効にする
コントローラーメソッドに @ CrossOrigin アノテーションを使用して、RESTful Webサービスの起点を設定する必要があります。 この@CrossOrigin注釈は、アプリケーション全体ではなく、特定のREST APIをサポートしています。
@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")
public ResponseEntity<Object> getProduct() {
return null;
}
グローバルCORS設定
表示された@Bean構成を定義して、CORS構成サポートをSpring Bootアプリケーションにグローバルに設定する必要があります。
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/products").allowedOrigins("http://localhost:9000");
}
};
}
メインのSpring BootアプリケーションでCORS構成をグローバルに設定するコードを以下に示します。
package com.finddevguides.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/products").allowedOrigins("http://localhost:8080");
}
};
}
}
これで、8080ポートで実行されるSpring Boot Webアプリケーションと、9090ポートで実行できるRESTful Webサービスアプリケーションを作成できます。 RESTful Webサービスに関する実装の詳細については、このチュートリアルの Consuming RESTful Web Services というタイトルの章を参照してください。