Spring Bootでクロスオリジン問題を解決する方法

Spring Boot でのクロスオリジン問題への対応方法

  1. 「@EnableWebMvc」と「@CrossOrigin」の注釈を使用する:Spring Bootの起動クラスに「@EnableWebMvc」の注釈を追加、コントローラのメソッドに「@CrossOrigin」の注釈を追加すれば、クロスドメインアクセスが実現できる。例えば:
@SpringBootApplication
@EnableWebMvc
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@RestController
public class MyController {
    @CrossOrigin(origins = "http://localhost:8081")
    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}
  1. WebMvcConfigurerを使用してクロスオリジンアクセスを構成する: WebMvcConfigurerインターフェイスを実装した構成クラスを作成し、そこでaddCorsMappingsメソッドをオーバーライドして、クロスオリジンアクセスの許可されるパスとメソッドを設定します。例:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("http://localhost:8081")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowCredentials(true)
                .maxAge(3600);
    }
}
  1. CorsFilterクラスをjavax.servlet.Filterを継承して作成し、doFilterメソッドをオーバーライドすることで、跨域処理機能を実現する。
@Component
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse res = (HttpServletResponse) response;
        res.setHeader("Access-Control-Allow-Origin", "http://localhost:8081");
        res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
        res.setHeader("Access-Control-Allow-Credentials", "true");
        res.setHeader("Access-Control-Allow-Max-Age", "3600");
        chain.doFilter(request, response);
    }
}

実際のニーズに合わせて、上記のいずれかの方法を選択することでクロスドメインの問題を解決できます。

bannerAds