We face  CORS(Cross-origin resource sharing) issue specially when  working with react or angular apps and running spring boot on different port, and front end app on some other to solve the CORS issue in spring boot is very easy and simple. to know Solve the issue we should know the cause.

So when we are working front end trying to call a service on back end which are running on different domain or ports during development,browser  as security measure calls an Pre-flight request as option method seeking permission to access the required service with allowed headers and method  to perform an actual request, by default the option method will be disabled, in some cases certain methods or headers are restricted. we need to override options to provide 200 as response granting the permission.

So lets Enable CORS  in the spring boot application running on embedded tomcat. the configuration is pretty simple and straight forward.

Create an class in spring boot Application with following code to Enable CORS(Cross-origin resource sharing) in spring boot application.

package <..........>;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CORSAdvice {

    @Bean
    public FilterRegistrationBean corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
        bean.setOrder(0);
        return bean;
    }

}

So after writing this class rebuild the spring boot application and happy coding..!!!