diff --git a/core/src/main/java/io/confluent/rest/Application.java b/core/src/main/java/io/confluent/rest/Application.java index 8550617838..751489ba0a 100644 --- a/core/src/main/java/io/confluent/rest/Application.java +++ b/core/src/main/java/io/confluent/rest/Application.java @@ -301,6 +301,15 @@ protected void doStop() throws Exception { if (allowedMethods != null && !allowedOrigins.trim().isEmpty()) { filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, allowedMethods); } + String controlMaxAge = getConfiguration().getString(RestConfig.ACCESS_CONTROL_MAX_AGE); + if (controlMaxAge != null && !controlMaxAge.trim().isEmpty()) { + filterHolder.setInitParameter(CrossOriginFilter.PREFLIGHT_MAX_AGE_PARAM, controlMaxAge); + } + String allowedHeaders = getConfiguration().getString(RestConfig.ACCESS_CONTROL_ALLOW_HEADERS); + if (allowedHeaders != null && !allowedHeaders.trim().isEmpty()) { + filterHolder.setInitParameter(CrossOriginFilter.ALLOWED_HEADERS_PARAM, allowedHeaders); + } + context.addFilter(filterHolder, "/*", EnumSet.of(DispatcherType.REQUEST)); } configurePreResourceHandling(context); diff --git a/core/src/main/java/io/confluent/rest/RestConfig.java b/core/src/main/java/io/confluent/rest/RestConfig.java index 81b4d7b3b2..52b639f2f7 100644 --- a/core/src/main/java/io/confluent/rest/RestConfig.java +++ b/core/src/main/java/io/confluent/rest/RestConfig.java @@ -75,6 +75,16 @@ public class RestConfig extends AbstractConfig { "Set value to Jetty Access-Control-Allow-Origin header for specified methods"; protected static final String ACCESS_CONTROL_ALLOW_METHODS_DEFAULT = ""; + public static final String ACCESS_CONTROL_ALLOW_HEADERS = "access.control.allow.headers"; + protected static final String ACCESS_CONTROL_ALLOW_HEADERS_DOC = + "Set value to Jetty Access-Control-Allow-Headers header for specified methods"; + protected static final String ACCESS_CONTROL_ALLOW_HEADERS_DEFAULT = ""; + + public static final String ACCESS_CONTROL_MAX_AGE = "access.control.max.age"; + protected static final String ACCESS_CONTROL_MAX_AGE_DOC = + "Set value to Jetty Access-Control-Max-Age header for specified methods"; + protected static final String ACCESS_CONTROL_MAX_AGE_DEFAULT = ""; + public static final String REQUEST_LOGGER_NAME_CONFIG = "request.logger.name"; protected static final String REQUEST_LOGGER_NAME_DOC = @@ -265,6 +275,18 @@ public static ConfigDef baseConfigDef() { ACCESS_CONTROL_ALLOW_METHODS_DEFAULT, Importance.LOW, ACCESS_CONTROL_ALLOW_METHODS_DOC + ).define( + ACCESS_CONTROL_ALLOW_HEADERS, + Type.STRING, + ACCESS_CONTROL_ALLOW_HEADERS_DEFAULT, + Importance.LOW, + ACCESS_CONTROL_ALLOW_HEADERS_DOC + ).define( + ACCESS_CONTROL_MAX_AGE, + Type.LONG, + ACCESS_CONTROL_MAX_AGE_DEFAULT, + Importance.LOW, + ACCESS_CONTROL_MAX_AGE_DOC ).define( REQUEST_LOGGER_NAME_CONFIG, Type.STRING,