Spring Boot - Hỗ trợ CORS

Chia sẻ tài nguyên xuyên nguồn (CORS) là một khái niệm bảo mật cho phép hạn chế các tài nguyên được triển khai trong trình duyệt web. Nó ngăn mã JavaScript tạo ra hoặc sử dụng các yêu cầu đối với các nguồn gốc khác nhau.

Ví dụ: ứng dụng web của bạn đang chạy trên cổng 8080 và bằng cách sử dụng JavaScript, bạn đang cố gắng sử dụng các dịch vụ web RESTful từ cổng 9090. Trong những tình huống như vậy, bạn sẽ phải đối mặt với vấn đề bảo mật Chia sẻ tài nguyên xuyên nguồn trên trình duyệt web của mình.

Cần có hai yêu cầu để xử lý vấn đề này -

  • Các dịch vụ web RESTful phải hỗ trợ Chia sẻ Tài nguyên Nhiều Nguồn gốc.

  • Ứng dụng dịch vụ web RESTful sẽ cho phép truy cập (các) API từ cổng 8080.

Trong chương này, chúng ta sẽ tìm hiểu chi tiết về Cách kích hoạt yêu cầu đa nguồn cho một ứng dụng RESTful Web Service.

Bật CORS trong Phương pháp Bộ điều khiển

Chúng tôi cần thiết lập nguồn gốc cho dịch vụ web RESTful bằng cách sử dụng @CrossOriginchú thích cho phương thức bộ điều khiển. Chú thích @CrossOrigin này hỗ trợ API REST cụ thể chứ không phải cho toàn bộ ứng dụng.

@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")

public ResponseEntity<Object> getProduct() {
   return null;
}

Cấu hình CORS toàn cầu

Chúng tôi cần xác định cấu hình @Bean được hiển thị để đặt hỗ trợ cấu hình CORS trên toàn cầu cho ứng dụng Spring Boot của bạn.

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

Mã để thiết lập cấu hình CORS toàn cầu trong ứng dụng Spring Boot chính được đưa ra dưới đây.

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;
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");
         }
      };
   }
}

Bây giờ, bạn có thể tạo ứng dụng web Spring Boot chạy trên cổng 8080 và ứng dụng dịch vụ web RESTful của bạn có thể chạy trên cổng 9090. Để biết thêm chi tiết về cách triển khai về Dịch vụ Web RESTful, bạn có thể tham khảo chương có tiêu đềConsuming RESTful Web Services của hướng dẫn này.