In this post we will learn to enable cors in spring boot rest API
For security reasons, browsers prohibit AJAX calls to resources residing outside the current origin.
While we facing cors issue, we need to enable cors in spring boot application explicitly
Enable for whole spring boot
We need to add below class in our spring boot application, this will enable cors for all endpoints
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CorsConfig {
public WebMvcConfigurer corsConfigure() {
return new WebMvcConfigurerAdapter() {
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
};
}
}
Enable for specific endpoint
Below snippet will enable cors only for endpoint which starts with /api
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CorsConfig {
public WebMvcConfigurer corsConfigure() {
return new WebMvcConfigurerAdapter() {
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**");
}
};
}
}
Enable for specific orgins
Below snippet will enable for orgin https://beginnersbug.com
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class CorsConfig {
public WebMvcConfigurer corsConfigure() {
return new WebMvcConfigurerAdapter() {
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("https://beginnersbug.com");
}
};
}
}
Enable CORS with Annotation
we can enable cors by annotation. we need to mention @crossOrgin annotation in the controller class as like below
import java.util.List;
import java.util.Optional;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.beginnersbug.studentservice.dao.StudentDao;
import com.beginnersbug.studentservice.model.Student;
@RestController()
@CrossOrigin()
@RequestMapping("/api/student")
public class StudentController {
@Autowired
StudentDao studentsDao;
@RequestMapping(method = RequestMethod.GET)
public List<Student> getStudentsList() {
return studentsDao.findAll();
}
}
Github
Related Articles
read value from application.properties spring boot