Spring Boot – CORS Support

Cross-Origin Resource Sharing (CORS) is a security concept that allows restricting the resources implemented in web browsers. It prevents the JavaScript code producing or consuming the requests against different origin.

For example, your web application is running on 8080 port and by using JavaScript you are trying to consuming RESTful web services from 9090 port. Under such situations, you will face the Cross-Origin Resource Sharing security issue on your web browsers.

Two requirements are needed to handle this issue −

  • RESTful web services should support the Cross-Origin Resource Sharing.
  • RESTful web service application should allow accessing the API(s) from the 8080 port.

In this chapter, we are going to learn in detail about How to Enable Cross-Origin Requests for a RESTful Web Service application.

Enable CORS in Controller Method

We need to set the origins for RESTful web service by using @CrossOrigin annotation for the controller method. This @CrossOrigin annotation supports specific REST API, and not for the entire application.

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

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

Global CORS Configuration

We need to define the shown @Bean configuration to set the CORS configuration support globally to your Spring Boot application.

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

To code to set the CORS configuration globally in main Spring Boot application is given below.

package com.maixuanviet.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");
         }
      };
   }
}

Now, you can create a Spring Boot web application that runs on 8080 port and your RESTful web service application that can run on the 9090 port. For further details about implementation about RESTful Web Service, you can refer to the chapter titled Consuming RESTful Web Services of this tutorial.

Related posts:

Java Program to Implement TreeMap API
Introduction to Spring Boot CLI
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Java Program to Evaluate an Expression using Stacks
wait() and notify() Methods in Java
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Java Program to Implement Hash Trie
Luồng Daemon (Daemon Thread) trong Java
Java Program to Find the Longest Path in a DAG
Spring Data MongoDB – Indexes, Annotations and Converters
Java Multi-line String
Check If a String Is Numeric in Java
Java Program to Find Basis and Dimension of a Matrix
Spring Boot - Introduction
Java Program to find the peak element of an array using Binary Search approach
Java Program to Implement ConcurrentLinkedQueue API
Custom Thread Pools In Java 8 Parallel Streams
Netflix Archaius with Various Database Configurations
@Lookup Annotation in Spring
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
Java – Reader to InputStream
Java 8 Streams peek() API
Spring Boot - Tracing Micro Service Logs
Java Program to Check whether Graph is a Bipartite using DFS
Hướng dẫn Java Design Pattern – Command
Java Program to Implement Self organizing List
HttpAsyncClient Tutorial
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Apache Commons Collections OrderedMap
Java Program to Represent Graph Using Incidence List
Java Program to Implement Aho-Corasick Algorithm for String Matching
Java Program to Find kth Smallest Element by the Method of Partitioning the Array