Spring Boot - CORS 支援



跨源資源共享 (CORS) 是一種安全概念,允許限制在 Web 瀏覽器中實現的資源。它可以防止 JavaScript 程式碼對不同來源發出或使用請求。

例如,您的 Web 應用程式在 8080 埠上執行,並且您正在使用 JavaScript 從 9090 埠使用 RESTful Web 服務。在這種情況下,您將在 Web 瀏覽器上遇到跨源資源共享安全問題。

處理此問題需要兩個要求:

  • RESTful Web 服務應支援跨源資源共享。

  • RESTful Web 服務應用程式應允許從 8080 埠訪問 API。

在本章中,我們將詳細瞭解如何為 RESTful Web 服務應用程式啟用跨源請求。

在控制器方法中啟用 CORS

我們需要使用@CrossOrigin註解為控制器方法設定 RESTful Web 服務的來源。此 @CrossOrigin 註解支援特定的 REST API,而不是整個應用程式。

@RequestMapping(value = "/products")
@CrossOrigin(origins = "https://:8080")
public ResponseEntity<Object> getProduct() {
   return null;
}

全域性 CORS 配置

我們需要定義所示的 @Bean 配置,以便全域性地將 CORS 配置支援設定為您的 Spring Boot 應用程式。

@Bean
public WebMvcConfigurer corsConfigurer() {
   return new WebMvcConfigurer() {
      @Override
      public void addCorsMappings(CorsRegistry registry) {
         registry.addMapping("/products").allowedOrigins("https://:9000");
      }    
   };
}

在主 Spring Boot 應用程式中全域性設定 CORS 配置的程式碼如下所示。

DemoApplication.java

package com.tutorialspoint.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;

@SpringBootApplication
public class DemoApplication {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Bean
   public WebMvcConfigurer corsConfigurer() {
      return new WebMvcConfigurer() {
         @Override
         public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/products").allowedOrigins("https://:8080");
         }
      };
   }
}

現在,您可以建立一個在 8080 埠上執行的 Spring Boot Web 應用程式,以及可以在 9090 埠上執行的 RESTful Web 服務應用程式。有關 RESTful Web 服務實現的更多詳細資訊,您可以參考本教程中名為使用 RESTful Web 服務的章節。

廣告