Disable ShallowEtagHeaderFilter for HTTP streaming

Issue: SPR-12960
This commit is contained in:
Rossen Stoyanchev
2015-05-03 10:24:14 +02:00
parent 68ecb92d1f
commit 49e90575e9
6 changed files with 127 additions and 61 deletions

View File

@@ -26,10 +26,14 @@ import java.util.Map;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;
import javax.servlet.ServletRequest;
import org.springframework.http.HttpHeaders;
import org.springframework.http.server.ServerHttpAsyncRequestControl;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.web.filter.ShallowEtagHeaderFilter;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.WebSocketExtension;
import org.springframework.web.socket.WebSocketHandler;
@@ -202,6 +206,8 @@ public abstract class AbstractHttpSockJsSession extends AbstractSockJsSession {
this.asyncRequestControl = request.getAsyncRequestControl(response);
this.asyncRequestControl.start(-1);
disableShallowEtagHeaderFilter(request);
// Let "our" handler know before sending the open frame to the remote handler
delegateConnectionEstablished();
@@ -243,6 +249,8 @@ public abstract class AbstractHttpSockJsSession extends AbstractSockJsSession {
this.asyncRequestControl = request.getAsyncRequestControl(response);
this.asyncRequestControl.start(-1);
disableShallowEtagHeaderFilter(request);
handleRequestInternal(request, response, false);
this.readyToSend = isActive();
}
@@ -253,6 +261,13 @@ public abstract class AbstractHttpSockJsSession extends AbstractSockJsSession {
}
}
private void disableShallowEtagHeaderFilter(ServerHttpRequest request) {
if (request instanceof ServletServerHttpRequest) {
ServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
ShallowEtagHeaderFilter.disableContentCaching(servletRequest);
}
}
/**
* Invoked when a SockJS transport request is received.
* @param request the current request