package io.undertow.server.handlers;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import io.undertow.server.HandlerWrapper;
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.server.handlers.builder.HandlerBuilder;
import io.undertow.util.Headers;
Handler that disables response caching by browsers and proxies.
Author: Stuart Douglas
/**
*
* Handler that disables response caching by browsers and proxies.
*
*
* @author Stuart Douglas
*/
public class DisableCacheHandler implements HttpHandler {
private final HttpHandler next;
public DisableCacheHandler(HttpHandler next) {
this.next = next;
}
@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
exchange.getResponseHeaders().add(Headers.CACHE_CONTROL, "no-cache, no-store, must-revalidate");
exchange.getResponseHeaders().add(Headers.PRAGMA, "no-cache");
exchange.getResponseHeaders().add(Headers.EXPIRES, "0");
next.handleRequest(exchange);
}
@Override
public String toString() {
return "disable-cache()";
}
public static class Builder implements HandlerBuilder {
@Override
public String name() {
return "disable-cache";
}
@Override
public Map<String, Class<?>> parameters() {
return Collections.emptyMap();
}
@Override
public Set<String> requiredParameters() {
return Collections.emptySet();
}
@Override
public String defaultParameter() {
return null;
}
@Override
public HandlerWrapper build(Map<String, Object> config) {
return new Wrapper();
}
}
private static class Wrapper implements HandlerWrapper {
@Override
public HttpHandler wrap(HttpHandler handler) {
return new DisableCacheHandler(handler);
}
}
}