jetty/jetty.project

Question: AbstractProxyServlet onServerResponseHeaders addHeader rather than setHeader

Open

#577 opened on May 18, 2016

View on GitHub
 (9 comments) (0 reactions) (1 assignee)Java (1,913 forks)batch import
Help Wanted

Repository metrics

Stars
 (3,701 stars)
PR merge metrics
 (Avg merge 6d 14h) (48 merged PRs in 30d)

Description

We have a listener implmenets org.eclipse.jetty.client.api.Response.Listener class and for onHeaders method we have the following implementation

    @Override
    public void onHeaders(Response response) {
        wrappedVersion.onHeaders(response);
    }

this wrappedVersion.onHeaders calls ProxyResponseListener then calls AbstractProxyServlet's onServerResponseHeaders method which calls addHeader.

This is a problem for us because we have configured org.eclipse.jetty.servlets.CrossOriginFilter which has handleSimpleResponse which calls response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, origin);

And this CORS filter is called before our filter. Which means for our filter onHeaders, rather than replacing the headers, it actually added more headers.

I wonder why Jetty doesn't do setHeader in onServerResponseHeaders? I am guessing this is because we do not want to lose any set cookie headers? And what would be a better design if its something we can improve on our side?

thanks

Contributor guide