Set a header to all responses in Spring Boot
This post will discuss how to set a header to all responses in a Spring Boot application.
In the previous post, we have covered how to set a header on a single response using HttpServletResponse or ResponseEntity. This post will discuss how to set a custom header to all responses in our application.
The idea is to use a filter. By using a filter, we can avoid adding responses manually for each of the mapping methods. There are several ways to register a filter class and set a response header in the Spring Boot application.
1. Extending OncePerRequestFilter
To create a custom filter, we can also extend the abstract class OncePerRequestFilter and annotate the filter with @Component. To set a header to each response, use addHeader() method of the HttpServletResponse interface. This is demonstrated below:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component public class FirstFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException { httpServletResponse.addHeader("Access-Control-Allow-Origin", "*"); filterChain.doFilter(httpServletRequest, httpServletResponse); } } |
2. Implementing Filter Interface
We can also implement the Filter interface and annotate the filter with one of the Spring stereotypes, such as @Component for Spring to recognize it. To set the custom header to each response, use addHeader() method of the HttpServletResponse interface.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component public class FirstFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; res.addHeader("Access-Control-Allow-Origin", "*"); chain.doFilter(req, res); } } |
That’s all about setting a header to all responses in Spring Boot.
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)