Adding header in response in filter?

emilly

I need to add the header in each response. I am planning to do below

public class MyFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request,
                                    HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {

        filterChain.doFilter(request, response);
            response.addHeader("Access-Control-Allow-Origin", "*"); 
    }

}

I would like to do it after filterChain.doFilter(request, response) so that once controller process it, i just add header before returning to client. Is it correct ?

But As per How to write response filter?

After chain.doFilter has returned, it's too late to do anything with the response. At this point, entire response was already sent to the client and your code has no access to it.

Above statement does not look right to me. Can't i add header after filterChain.doFilter(request, response) ? If not why ?

i am using spring mvc.

Luan Reffatti

After filterChain.doFilter is called it's too late to do anything with the response. At this point, the entire response was already sent to the client.

You need to build a wrap response into your own classes, pass these wrappers into doFilter method and handle any processing in your wrappers.

There is already a response wrapper: HttpServletResponseWrapper that you can extend. For example:

public class MyResponseRequestWrapper extends HttpServletResponseWrapper{
    public MyResponseRequestWrapper(HttpServletResponse response) {
        super(response);
    }
}

Your filter:

@Override
protected void doFilterInternal(HttpServletRequest request,
                                HttpServletResponse response, FilterChain filterChain)
        throws ServletException, IOException {

    HttpServletResponse myResponse = (HttpServletResponse) response;
    MyResponseRequestWrapper responseWrapper = new MyResponseRequestWrapper(myResponse);
    responseWrapper.addHeader("Access-Control-Allow-Origin", "*");
    filterChain.doFilter(request, myResponse);
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Java

Adding header for HttpURLConnection

From Dev

Adding custom request header

From Dev

Adding a header to UITableview programmatically

From Dev

Adding SOAP Header to request

From Dev

WCF adding additional HTTP header to HTTP response for transporting SOAP message

From Dev

Adding a table header on this code?

From Dev

Adding Header moves Div

From Dev

Adding header and footer in graphviz

From Dev

Adding JsessionID in Request Header

From Dev

Spring WS how to get server side soap response xml for adding soap header with sign

From Dev

Adding header to response for specific URLs with HAproxy

From Dev

not getting success response when adding custom headers with Authorization header in get header() volley

From Dev

ASP.NET 5 Middleware "no response received" after adding header

From Dev

Adding X-Robot-Tag to response header in Sitecore 8

From Dev

Adding header files in Verilog

From Dev

Adding Security Header

From Dev

Adding response header in Servant

From Dev

Adding header authorisation with Jersey

From Dev

spring boot GenericFilterBean , filter return error code & response header at client side

From Dev

Adding Header moves Div

From Dev

not getting success response when adding custom headers with Authorization header in get header() volley

From Dev

Adding X-Robot-Tag to response header in Sitecore 8

From Dev

Adding header authorisation with Jersey

From Dev

response header to cache the response?

From Dev

Angularjs: Why does adding an authorization header cause a -1 status response?

From Dev

Adding a BMP grayscale header

From Dev

how can I write netflix zuul filter to change response location header attribute?

From Dev

adding http response header

From Dev

What is an appropriate response header for language filter fail?

Related Related

  1. 1

    Adding header for HttpURLConnection

  2. 2

    Adding custom request header

  3. 3

    Adding a header to UITableview programmatically

  4. 4

    Adding SOAP Header to request

  5. 5

    WCF adding additional HTTP header to HTTP response for transporting SOAP message

  6. 6

    Adding a table header on this code?

  7. 7

    Adding Header moves Div

  8. 8

    Adding header and footer in graphviz

  9. 9

    Adding JsessionID in Request Header

  10. 10

    Spring WS how to get server side soap response xml for adding soap header with sign

  11. 11

    Adding header to response for specific URLs with HAproxy

  12. 12

    not getting success response when adding custom headers with Authorization header in get header() volley

  13. 13

    ASP.NET 5 Middleware "no response received" after adding header

  14. 14

    Adding X-Robot-Tag to response header in Sitecore 8

  15. 15

    Adding header files in Verilog

  16. 16

    Adding Security Header

  17. 17

    Adding response header in Servant

  18. 18

    Adding header authorisation with Jersey

  19. 19

    spring boot GenericFilterBean , filter return error code & response header at client side

  20. 20

    Adding Header moves Div

  21. 21

    not getting success response when adding custom headers with Authorization header in get header() volley

  22. 22

    Adding X-Robot-Tag to response header in Sitecore 8

  23. 23

    Adding header authorisation with Jersey

  24. 24

    response header to cache the response?

  25. 25

    Angularjs: Why does adding an authorization header cause a -1 status response?

  26. 26

    Adding a BMP grayscale header

  27. 27

    how can I write netflix zuul filter to change response location header attribute?

  28. 28

    adding http response header

  29. 29

    What is an appropriate response header for language filter fail?

HotTag

Archive