Spring Boot - รองรับ CORS
Cross-Origin Resource Sharing (CORS) เป็นแนวคิดด้านความปลอดภัยที่อนุญาตให้ จำกัด ทรัพยากรที่ใช้งานในเว็บเบราว์เซอร์ ป้องกันไม่ให้โค้ด JavaScript สร้างหรือใช้คำขอจากแหล่งที่มาที่แตกต่างกัน
ตัวอย่างเช่นเว็บแอปพลิเคชันของคุณกำลังทำงานบนพอร์ต 8080 และด้วยการใช้ JavaScript คุณกำลังพยายามใช้บริการเว็บ RESTful จากพอร์ต 9090 ภายใต้สถานการณ์เช่นนี้คุณจะต้องเผชิญกับปัญหาความปลอดภัยของการแชร์ทรัพยากรข้ามแหล่งที่มาบนเว็บเบราว์เซอร์ของคุณ
จำเป็นต้องมีข้อกำหนดสองประการในการจัดการปัญหานี้ -
บริการเว็บ RESTful ควรรองรับการแชร์ทรัพยากรข้ามแหล่งที่มา
แอปพลิเคชันบริการเว็บ RESTful ควรอนุญาตให้เข้าถึง API จากพอร์ต 8080
ในบทนี้เราจะเรียนรู้รายละเอียดเกี่ยวกับวิธีเปิดใช้งานคำขอข้ามแหล่งที่มาสำหรับแอปพลิเคชัน RESTful Web Service
เปิดใช้งาน CORS ในวิธีการควบคุม
เราจำเป็นต้องตั้งค่าต้นกำเนิดสำหรับบริการเว็บ RESTful โดยใช้ @CrossOriginคำอธิบายประกอบสำหรับวิธีการควบคุม คำอธิบายประกอบ @CrossOrigin นี้รองรับ REST API เฉพาะไม่ใช่สำหรับแอปพลิเคชันทั้งหมด
@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")
public ResponseEntity<Object> getProduct() {
return null;
}
การกำหนดค่า Global 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");
}
};
}
ในการตั้งรหัสเพื่อตั้งค่า CORS ทั่วโลกในแอปพลิเคชัน Spring Boot หลักได้รับด้านล่าง
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");
}
};
}
}
ตอนนี้คุณสามารถสร้างเว็บแอปพลิเคชัน Spring Boot ที่ทำงานบนพอร์ต 8080 และแอปพลิเคชันบริการเว็บ RESTful ของคุณที่สามารถทำงานบนพอร์ต 9090 ได้ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการใช้งานเกี่ยวกับ RESTful Web Service คุณสามารถอ้างถึงบทที่ชื่อConsuming RESTful Web Services ของบทช่วยสอนนี้