Skip to content

Commit 683f9bb

Browse files
authored
Add X-Elastic-Product header on all http responses (#73434) (#73919)
Backports the following commits to 7.x: Add X-Elastic-Product header on all http responses
1 parent 23bfb86 commit 683f9bb

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

server/src/main/java/org/elasticsearch/rest/RestController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public class RestController implements HttpServerTransport.Dispatcher {
5757

5858
private static final Logger logger = LogManager.getLogger(RestController.class);
5959
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(RestController.class);
60+
static final String ELASTIC_PRODUCT_HTTP_HEADER = "X-elastic-product";
61+
static final String ELASTIC_PRODUCT_HTTP_HEADER_VALUE = "Elasticsearch";
6062
private static final String ELASTIC_PRODUCT_ORIGIN_HTTP_HEADER = "X-elastic-product-origin";
6163

6264
private static final BytesReference FAVICON_RESPONSE;
@@ -188,6 +190,7 @@ public void registerHandler(final RestHandler handler) {
188190

189191
@Override
190192
public void dispatchRequest(RestRequest request, RestChannel channel, ThreadContext threadContext) {
193+
threadContext.addResponseHeader(ELASTIC_PRODUCT_HTTP_HEADER, ELASTIC_PRODUCT_HTTP_HEADER_VALUE);
191194
try {
192195
tryAllHandlers(request, channel, threadContext);
193196
} catch (Exception e) {
@@ -203,6 +206,7 @@ public void dispatchRequest(RestRequest request, RestChannel channel, ThreadCont
203206

204207
@Override
205208
public void dispatchBadRequest(final RestChannel channel, final ThreadContext threadContext, final Throwable cause) {
209+
threadContext.addResponseHeader(ELASTIC_PRODUCT_HTTP_HEADER, ELASTIC_PRODUCT_HTTP_HEADER_VALUE);
206210
try {
207211
final Exception e;
208212
if (cause == null) {

server/src/test/java/org/elasticsearch/rest/RestControllerTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.junit.Before;
4141

4242
import java.io.IOException;
43+
import java.util.ArrayList;
4344
import java.util.Arrays;
4445
import java.util.Collections;
4546
import java.util.HashMap;
@@ -141,6 +142,10 @@ public MethodHandlers next() {
141142
assertEquals("true", threadContext.getHeader("header.1"));
142143
assertEquals("true", threadContext.getHeader("header.2"));
143144
assertNull(threadContext.getHeader("header.3"));
145+
List<String> expectedProductResponseHeader = new ArrayList<>();
146+
expectedProductResponseHeader.add(RestController.ELASTIC_PRODUCT_HTTP_HEADER_VALUE);
147+
assertEquals(expectedProductResponseHeader, threadContext.getResponseHeaders()
148+
.getOrDefault(RestController.ELASTIC_PRODUCT_HTTP_HEADER, null));
144149
}
145150

146151
public void testRequestWithDisallowedMultiValuedHeader() {

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/rest/SecurityRestFilter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@ private void handleException(String actionType, RestRequest request, RestChannel
111111
@Override
112112
public Map<String, List<String>> filterHeaders(Map<String, List<String>> headers) {
113113
if (headers.containsKey("Warning")) {
114-
return Maps.copyMapWithRemovedEntry(headers, "Warning");
114+
headers = Maps.copyMapWithRemovedEntry(headers, "Warning");
115+
}
116+
if (headers.containsKey("X-elastic-product")) {
117+
headers = Maps.copyMapWithRemovedEntry(headers, "X-elastic-product");
115118
}
116119
return headers;
117120
}

0 commit comments

Comments
 (0)